我有一个类型的对象: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/