Есть ли .Net TypeConverter эквивалент в Java - PullRequest
6 голосов
/ 17 февраля 2010

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

Ответы [ 3 ]

2 голосов
/ 17 февраля 2010

Для кого-то из мира .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, если у вас возникли проблемы

0 голосов
/ 01 ноября 2010

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

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

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

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

0 голосов
/ 17 февраля 2010

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