9

次のコードでは、何Type typeを意味し、中かっこは何のために使用されていますか?

Type type = new TypeToken<List<String>>(){}.getType();
List<String> list = converter.fromJson(jsonStringArray, type ); 
4

3 に答える 3

7

それは関数呼び出しの後ではなく、コンストラクター呼び出しの後です。この線

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には、この例が他にもあります。メソッドはオーバーライドされておらず、インスタンス初期化ブロックも使用されていないため、これはやや特殊な使用法です。(インスタンス初期化ブロックの詳細については、フィールドの初期化を参照してください。)

于 2013-09-23T20:39:45.667 に答える
7

Typeクラスです。

new TypeToken<List<String>>() {
}.getType();

匿名の内部クラスを作成し、getType()作成されたオブジェクトを呼び出しています。

于 2013-09-23T20:40:33.730 に答える
1

中かっこは無名クラス コンストラクターであり、コンストラクター呼び出しの後に使用されます。内部では、メソッドをオーバーライドまたは作成できます。

例:

    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
于 2013-09-23T20:40:40.293 に答える