Java8 : How to get the internal Type of java. util.Optional 类?

标签 java reflection

我有一个类型的对象:Optional<String>我想在运行时知道 Optional 的通用类型是什么- 意思是“字符串”。

我试过:

obj.getClass()

但这会返回 java.util.Optional

然后我试了,

obj.getParameterizedType();

但这不会返回它有 Class<> 对象。

有什么想法吗??

最佳答案

不存在类型为 Optional<String> 的对象.类型删除意味着只是 Optional在执行时。如果您有 Optional<String> 类型的字段或参数, 信息可以在执行时检索 - 但对象本身不知道。

基本上,Optional<> 没有什么特别的此处 - 它具有与使用 List<> 相同的所有限制...虽然它是最终版本,但您甚至不能使用 Guava 的 TypeToken 之类的任何解决方法。 .

参见 Java Generics FAQ on Type Erasure了解更多详情。

关于Java8 : How to get the internal Type of java. util.Optional 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24158965/

相关文章:

java - 为什么下面的数组返回 false?

c# - 如何区分编译器生成的类和 .NET 中的用户类

c# - 从对象获取属性信息而不将属性名称作为字符串提供

c# - 在 C# 中的 nestedProperty 上使用 InvokeMember

java - 在 Spring Boot 中读取 MacOs 环境变量

java - 为什么我在 IntelliJ IDEA 中运行 spring boot 项目时没有将依赖项添加到类路径中?

java - 在 Java 中嵌套 try/catch 语句是否可以接受?

Java 正则表达式 unicode 支持?

java - 如何通过反射获取另一个包的类中静态字段的值

json - 使用带有案例类和列名别名的反射的 Spark Dataframe 模式定义