.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
}
あまりにも多くのデータ変換を必要とする巨大なアプリを作成している場合は、自分で何かを作成できます。Spring の「TypeConverter」インターフェースは、適切な出発点になる可能性があります。
問題がある場合は、このリンクhttp://imagejdocu.tudor.lu/doku.php?id=howto:java:how_to_convert_data_type_x_into_type_y_in_javaを使用してください
TypeConverterが.netに追加され、インタラクティブなUIデザイナーが値を文字列として表示し、ユーザーがUIデザイナーが理解できないタイプの適切な値を編集できるようにします。
TypeConverterはデータバインディングでも使用されていると思います。
独自のソフトウェアでTypeConverterを使用して、コンパイル時にわかっているタイプ間で変換できるという事実は副作用であり、それらが作成された主なユースケースではありません。
Javaは「RAD」ツールのサポートを試みたことがないため、TypeConverterやPropertyDescriptorsなどの必要性はありませんでした。.netは 、VB6が有効にしたのと同じ種類のUI開発を可能にするようにある程度設計されました。
たとえば、文字列を含む 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;