Вопрос

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

Это было полезно?

Решение

Для кого-то из мира .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
}

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

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

Другие советы

Ну, вы можете набирать вещи по типам...например, если у вас есть объект 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;

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top