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

Java: How can I get generic type in runtime?

Class clazz = parameter.getParameterType();

我这里有 clazz,我确定这是 Optional<T> 类型 class。问题是我怎样才能得到这个T?我想知道这是 StringLongInteger 还是运行时的东西。

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

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>.