Java: 如何在运行时获取泛型类型?
Java: How can I get generic type in runtime?
Class clazz = parameter.getParameterType();
我这里有 clazz
,我确定这是 Optional<T>
类型 class。问题是我怎样才能得到这个T
?我想知道这是 String
或 Long
或 Integer
还是运行时的东西。
好吧,我好像没说清楚。我通过反射得到了一个方法参数,
public String abc(Optional<String> ttt, Optional<Integer> bbb) {
return;
}
所以现在我有 class 的 ttt 和 bbb,我确定这是 Optional<T>.class
,但我能得到哪个 T
吗?
你不能。在运行时,Java甚至不知道实际的通用类型。
如果 Optional
存在,你可以做 optional.get().getClass()
,但如果可选的不存在,则绝对无法判断它是否是 Optional<String>
、Optional<Integer>
, 或 Optional<NuclearMissile>
.
Class clazz = parameter.getParameterType();
我这里有 clazz
,我确定这是 Optional<T>
类型 class。问题是我怎样才能得到这个T
?我想知道这是 String
或 Long
或 Integer
还是运行时的东西。
好吧,我好像没说清楚。我通过反射得到了一个方法参数,
public String abc(Optional<String> ttt, Optional<Integer> bbb) {
return;
}
所以现在我有 class 的 ttt 和 bbb,我确定这是 Optional<T>.class
,但我能得到哪个 T
吗?
你不能。在运行时,Java甚至不知道实际的通用类型。
如果 Optional
存在,你可以做 optional.get().getClass()
,但如果可选的不存在,则绝对无法判断它是否是 Optional<String>
、Optional<Integer>
, 或 Optional<NuclearMissile>
.