0

次のメソッド シグネチャがあります。それをテンプレートに変換するにはどうすればよいですか。

public static JSONContainer getMappedRootObject(JSONContainer clazz, String filename) {
    ...
    JSONContainer container = new Gson().fromJson(br, JSONContainer.class);
    return container;
}

これは私が思いついたものです、これは正しいですか?

public static <T extends Object> T getMappedRootObject(Class<T> clazz, String filename) {
    T container = new Gson().fromJson(br, clazz);
    return container;
}
4

2 に答える 2

0

タイプTには常に特定の種類のスーパークラスがあると思われる場合は、次のようにパラメータ化できます。<T extends JSONContainer>

public static <T> T  getMappedRootObject(T clazz,String fileName){
    /**
     * ...
     * */
    T container = new Gson().fromJson(br, clazz.getClass());
    return container;
}
于 2012-06-24T17:04:59.767 に答える
0

JSONContainer実装で、「JSONContainer clazz」パラメーターがターゲットオブジェクトのインスタンスである場合は、次のようにすることができます。

public static <T> T getMappedRootObject(T instance, String filename) {
     //.......

    if (instance == null) {
        // handle this
    } else {
        T container = new Gson().fromJson(br, instance.getClass());
        return container;
    }
}
于 2012-06-24T16:51:56.850 に答える