1

JSON 文字列から解析して配列を返すいくつかの静的メソッドを含むユーティリティ クラスにメソッドを追加する必要があります。

問題は、これらのものにはさまざまなサブタイプがあることです。そのため、このメソッドを作成しました。

public static <E extends Thing> E[] parseThingsFromJSON(String body) {
    return parser.fromJson(body, E[].class);
}

呼び出し元は、このメソッドが何であるかをどのように伝えEますか? または、これを行うより良い方法はありますか?

4

2 に答える 2

6

あなたはそれを渡す必要があります。

public static <E extends Thing> E[] parseThingsFromJSON(String body, Class<E[]> eClass) {
    return parser.fromJson(body, eClass);
}

Genericsは、主にコンパイル時の機能です。これは、実行時に利用できないことを意味します(一部の例外を除く)

この場合、実行時にジェネリック型を使用可能にするには、追加の引数としてそれを渡す必要があります。

于 2012-08-31T10:28:49.063 に答える
1

メモリから、これはArrays.asList()を使用するときに発生する問題と同様の問題です。

これであなたはします

Arrays.<MyOjbect>(new MyObject(), new MyObject());

または、配列を渡す特定の場合など。

Arrays.<Integer[]>asList(new Integer[]{new Integer(1)});

このメソッドのJDKの署名は次のとおりです。

public static <T> List<T> asList(T... a){...}

これはあなたに似ていると思います

于 2012-08-31T10:29:19.203 に答える