我有一个类型的对象:Optional<String>我想在运行时知道什么是泛型类型Optional- 意思是'字符串'.
我试过了:
obj.getClass()
Run Code Online (Sandbox Code Playgroud)
但这会回来 java.util.Optional
然后我试过,
obj.getParameterizedType();
Run Code Online (Sandbox Code Playgroud)
但这并没有返回它有Class <>对象.
任何的想法??
没有类型的对象这样的东西Optional<String>.类型擦除意味着只是 Optional在执行时.如果您有一个类型的字段或参数Optional<String>,那么可以在执行时检索该信息 - 但对象本身并不知道它.
基本上,这里没有什么特别的Optional<>- 它具有与使用相同的限制List<>......虽然它是最终的,但你甚至不能使用像Guava这样的东西使用的任何变通方法TypeToken.
有关详细信息,请参阅类型擦除的Java泛型常见问题解答.