Есть ли.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;