Java 如何堆栈getClass()
为什么第一行有效,而第二行无效:Java 如何堆栈getClass(),java,Java,为什么第一行有效,而第二行无效: Class<? extends Class> c1 = (new Object()).getClass().getClass(); Class<? extends Class<? extends Class>> c2 = (new Object()).getClass().getClass().getClass(); Class类型不匹配:无法从类转换为 API文档中的类,用于 实际结果类型
Class<? extends Class> c1 = (new Object()).getClass().getClass();
Class<? extends Class<? extends Class>> c2 = (new Object()).getClass().getClass().getClass();
Class类型不匹配:无法从类转换为
API文档中的类,用于
实际结果类型是类,其中| X |是对调用getClass的表达式的静态类型的擦除。
因此(newobject()).getClass()将返回一个类Java使用类型擦除。世上没有这样的事
Class<? extends Class<? extends Class>>
应返回true
。因此,getClass()
也应该具有相同的类型:classi我的问题是,您在这里实际想要实现什么?我很难把它和现实世界的编程问题联系起来。。。假设(新对象()).getClass().getClass()
和(新对象()).getClass().getClass().getClass()
实际上是同一个对象。@StephenC你说得对。此时,我正在尝试在通用方法中调用getClass(),该方法的行为可以预测,无论将哪个类作为参数传递。从你的帖子中了解到一个已经是Class类型的对象上的getClass()返回它自己是很有帮助的。我开始理解了。因此,如果(新对象()).getClass()是Class@Mishax是的,类
Class<? extends Class<? extends Class>> c2 =
(Class<? extends Class<? extends Class>>) (newObject()).getClass().getClass().getClass();
Class<? extends Class<? extends Class>>
ArrayList<Integer> inta = new ArrayList<Integer>();
ArrayList<Double> doua = new ArrayList<Double>();
System.err.println(inta.getClass() == doua.getClass());
Class<ArrayList<Double>> dacls = (Class<ArrayList<Double>>) doua.getClass();