次のコードでは、何Type type
を意味し、中かっこは何のために使用されていますか?
Type type = new TypeToken<List<String>>(){}.getType();
List<String> list = converter.fromJson(jsonStringArray, type );
次のコードでは、何Type type
を意味し、中かっこは何のために使用されていますか?
Type type = new TypeToken<List<String>>(){}.getType();
List<String> list = converter.fromJson(jsonStringArray, type );
それは関数呼び出しの後ではなく、コンストラクター呼び出しの後です。この線
Type type = new TypeToken<List<String>>(){}.getType();
の匿名サブクラスのインスタンスを作成し、TypeToken
そのgetType()
メソッドを呼び出しています。同じことを 2 行で行うことができます。
TypeToken<List<String>> typeToken = new TypeToken<List<String>>(){};
Type type = typeToken.getType();
Java チュートリアルAnonymous Subclassesには、この例が他にもあります。メソッドはオーバーライドされておらず、インスタンス初期化ブロックも使用されていないため、これはやや特殊な使用法です。(インスタンス初期化ブロックの詳細については、フィールドの初期化を参照してください。)
Type
クラスです。
new TypeToken<List<String>>() {
}.getType();
匿名の内部クラスを作成し、getType()
作成されたオブジェクトを呼び出しています。
中かっこは無名クラス コンストラクターであり、コンストラクター呼び出しの後に使用されます。内部では、メソッドをオーバーライドまたは作成できます。
例:
private static class Foo {
public int baz() {
return 0;
}
}
public static void main(final String[] args) {
final Foo foo = new Foo() {
@Override
public int baz() {
return 1;
}
};
System.out.println(foo.baz());
}
出力:
1