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

标签 java generics runtime

<分区>

Class clazz = parameter.getParameterType();

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

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

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

现在我有了 ttt 和 bbb 类,我确定这是 Optional<T>.class , 但我能得到哪个 T弹性地就是这样。

最佳答案

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

如果Optional存在,你可以做optional.get().getClass() , 但如果不存在可选的,则绝对无法判断它是否是 Optional<String> , Optional<Integer> , 或 Optional<NuclearMissile> .

关于Java:如何在运行时获取泛型类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34781228/

相关文章:

Java - 如何将泛型类型的类传递给方法

java - 运行并行作业时如何安全地将参数从 Tasklet 传递到步骤

java - 拖放 SWT TableColumn 标题?

delphi - 如何在Delphi中调用TObjectDictionary的继承构造函数

JavaFX Dialog getResult() 方法未返回正确的泛型类型

rust - 在 Rust 中推送运行时操作以编译时间?

在c中动态更改结构属性

algorithm - 采访 : Renaming all files in a directory using a data structure

java - Java 解压缩/压缩的后续问题

java - 如何在 java 中显示 native 文件系统的文件/文件夹的 "properties window"