0

好的,我能以某种方式实现这一点:

String myString = "someString";
Class myClass = myString.getClass();

HashMap<mClass, Integer> = new HashMap<myClass, Integer>();

所以我想创建一个新的哈希图,类类型为我的变量的键,如整数或字符串......

4

2 回答 2

1

这是不可能的。我将带您了解各种可能性。

您可以使用泛型创建一个辅助方法。这将起作用,因为所有泛型都编译为 simple Objects。

public static <T> Map<T, Integer> createMap(Class<T> cl)
{
    return new HashMap<T, Integer>();
}

现在,您可以像这样使用它:

Map<String, Integer> map = createMap(String.class);

但是,这将要求您在编译时知道 T 是什么。所以这行不通:

String str = "Test";
Class cl = str.getClass();
Map<String, Integer> map = createMap(cl); // Doesn't compile.

所以,总而言之,这个辅助方法没有任何价值,因为你可以简单地写:

Map<String, Integer> map = new HashMap<String, Integer>();
于 2013-09-07T14:20:11.523 回答
0

由于类型擦除,这不起作用。一种可能(但更详细的方法)是创建一个工厂方法,该方法根据传递的参数返回一个 Map ,例如:

MapFactory.create(String.class);

编辑:在回答@millimoose 关于这与直接实例化没有什么不同的评论(这是真的):

您可以尝试实现自己的 Map 或装饰或扩展 HashMap 实现,以便它保留类型信息。

于 2013-09-07T14:11:43.360 回答