Java:如何在运行时获得泛型类型?

时间:2016-01-14 03:30:44

标签: java generics runtime

Class clazz = parameter.getParameterType();

这里我有clazz,我确定这是Optional<T>类型类。问题是如何才能获得此T?我想知道这是StringLong还是Integer或运行时中的某些内容。

好吧,我想我没说清楚。我通过反射得到了一个方法参数,

public String abc(Optional<String> ttt, Optional<Integer> bbb) {
    return;
}

所以现在我有了ttt和bbb的类,我确信这是Optional<T>.class,但我可以得到那个T

1 个答案:

答案 0 :(得分:4)

不能。在运行时,Java甚至不知道实际的泛型类型。

如果Optional存在,您可以执行optional.get().getClass(),但如果缺少可选项,则绝对无法判断它是Optional<String>Optional<Integer> ,或Optional<NuclearMissile>