【发布时间】:2010-09-10 19:39:10
【问题描述】:
我有一个 Map,我想从该 Map 的实例中获取 T 的类型。我该怎么做?
例如我想做类似的事情:
Map<String, Double> map = new HashMap<String, Double>();
...
String vtype = map.getValueType().getClass().getName(); //I want to get Double here
API 中当然没有这样的“getValueType()”函数。
【问题讨论】:
-
你可以使用Reflection
-
功能需求是什么?可能有比摆弄反射更好的解决方案。
-
不,由于类型擦除,反射不会这样做。
-
@StaxMan - 实际上,反射会起作用,因为您可以检索有关实例声明类型的信息。不过,您对安迪的回答的评论是正确的:如果您只有实例,则无法从中获取类型信息。但很可能该实例是在某处(类成员、方法签名等)声明的,并且该声明可用于反射性地确定类型。不过,从技术上讲,这些值并不能保证。