Есть ли.Net TypeConverter эквивалент в Java

В.NET, когда у меня было "значение", которое могло существовать в виде нескольких типов, я мог легко использовать TypeConverter для переключения между этими типами (типы валют, данные xml против представления объектов и т. Д.). В Java я не уверен, какой предпочтительный способ справиться с этой ситуацией. Есть ли в Java эквивалент TypeConverter?

3 ответа

Решение

Для кого-то из мира.NET это будет сюрпризом, что нет ничего из коробки. Это потому, что у нас есть такие вещи, как примитивы (int, long) и т. Д., Их обертки-примитивы (Integer, Long и т. Д.), Автобокс от int до Integer, когда вам требуется (это из JDK 1.5).

Так что мы, бедные Java-разработчики, вручную конвертируем вещи (некоторые примеры приведены выше @Boolean). Кроме того, бесконечные хлопоты с использованием операторов == при их выполнении. Например: кешируются целочисленные значения до 127.

public void testsimple() {
    Integer a = 124, b = 124, c = 500, d= 500;
    System.out.println(a == b); //prints true in JDK 1.6
    System.out.println(c == d); //prints false in JDK 1.6
}

Если вы пишете огромное приложение, которое требует слишком большого преобразования данных, вы можете написать что-то самостоятельно. Весенний интерфейс TypeConverter может стать достойным началом.

Используйте эту ссылку http://imagejdocu.tudor.lu/doku.php?id=howto:java:how_to_convert_data_type_x_into_type_y_in_java если у вас возникли проблемы

TypeConverter был частично добавлен в.net, чтобы позволить интерактивным дизайнерам пользовательского интерфейса отображать значения в виде строки и позволять пользователю редактировать правильные значения типов, которые дизайнер UI не понимает.

Я думаю, что TypeConverter также используется для привязки данных.

Тот факт, что вы можете использовать TypeConverter в своем собственном программном обеспечении для преобразования между типами, которые вы знаете во время компиляции, является побочным эффектом, а не основным вариантом использования, для которого они были созданы.

Поскольку Java никогда не пыталась поддерживать инструменты "RAD", в ней не было такой же потребности в TypeConverter, PropertyDescriptors и т. Д. В некоторой степени.net был разработан для того, чтобы разрешать разработку пользовательского интерфейса того же рода, что и VB6.

Ну, вы можете типизировать вещи... например, если у вас есть объект List, который содержит строки... вы бы взяли строку из списка следующим образом:

List aList = new List();
aList.add("Hello World);
String s = (String) aList.get(0);

Если вы пытаетесь преобразовать строку в число... вы должны сделать что-то похожее на это:

String aString = "200";
int i = Integer.Parse(aString);

Я обманываю при преобразовании целого числа в строку, выполнив это:

int i = 200;
String s = "" + i;
Другие вопросы по тегам