gpt4 book ai didi

java - Java中的类等价

转载 作者:行者123 更新时间:2023-11-30 07:08:18 25 4
gpt4 key购买 nike

一个小问题让我想到了一个基本问题。我打算在以下情况下检查类等价性(学术好奇心 - 请不要将我指向 instanceofisinstance):

public class staticChild extends staticParent{
....
public static void main(String[] args){
staticChild thisobj=new staticChild();
System.out.println(thisobj.getClass()==staticParent.class);
}

}

这给出了编译错误:

error: incomparable types: Class<CAP#1> and Class<staticParent>
System.out.println(thisobj.getClass()==staticParent.class);
where CAP#1 is a fresh type-variable: CAP#1 extends staticChild from capture of ? extends staticChild
  1. 这是什么意思?
  2. type 和 class 之间有什么区别(具体到这个上下文 - staticchild 的类型和类是什么)?
  3. 如何消除编译错误?

最佳答案

thisobj声明为 staticChild 类型,表达式:

thisobj.getClass()

返回类型为 Class<? extends staticChild> 的对象.您正在尝试将其与 Class<staticParent> 类型的对象进行比较但是编译器无法匹配泛型类型参数。它知道 staticParent不可能扩展 staticChild所以它没有什么可以分配给 ?Class<? extends staticChild> .

有几种方法可以消除错误。例如,您可以声明 thisobj类型为 Object (甚至是 staticParent 类型)。

但是请注意,测试总是会失败。

关于java - Java中的类等价,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24103122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com