0

次の関数があるとします。

<T> T   getFromCache (ClassType<T>   clazz);

文字列の場合:

String str =   getFromCache(String.class);

私が現在やろうと考えている地図について:

//… 
Map<String, SomeData>   anotherMapObject  = getFromCache( HashMap.class);

これより具体的に言えますか?

もちろん、1つの解決策は、「HashMap」を1つのクラスにラップすることです。しかし、それをしたくない場合、より良い解決策はありますか?

4

1 に答える 1

0

マップの実装を渡したい場合は、次のようにします。

private <M extends Map> Map<String, String> get(Class<M> m) throws Exception {
        return (Map<String, String>) m.newInstance();
    }

次のように、キーと値の型をパラメータ化できます。

private <M extends Map<K, V>, K, V> M getMap(Class<M> m, Class<K> k, Class<V> v)
于 2012-09-05T19:35:58.257 に答える