gpt4 book ai didi

java - 比较具有相同父类(super class)的 2 个子类实例

转载 作者:行者123 更新时间:2023-12-02 07:25:09 24 4
gpt4 key购买 nike

我有 2 个子类(学生、教师)和一个父类(super class)(职业)。
我已从学生创建了对象 A,从教师创建了对象 B。

Student A = new Student();
Teacher B = new Teacher();

我已经创建了一个静态方法,它将对象作为参数并返回 boolean 值;

compare(A, B);

public static boolean compare(Student s, Teacher t)

在该方法中,我只是放置此代码来比较两个对象是否属于同一类;

if (s.getClass() == t.getClass())

现在我收到错误消息:

incomparable types: Class<CAP#1> and Class<CAP#2>

其中 CAP#1、CAP#2 是新的类型变量:

CAP#1 extends Student from capture of ? extends Student
CAP#2 extends Teacher from capture of ? extends Teacher

这里出了什么问题?

注意:如果我使用比较 s.equals(t),它根本没有任何错误。为什么我不能正确使用object.getClass()方法?

最佳答案

我想你想要这样的东西:

    public static boolean compare(Object o1, Object o2)

然后也许使用 instanceof比较像 if(o1 instanceof Teacher && o2 instanceof Student)

抛出异常是因为 getClass()返回 Class<? extends Object>就像错误消息告诉您的那样,这些类(class)是无法比较的,因为学生和教师将返回不同的类(class)(我认为您的错误是假设返回了类似字符串的内容)。

关于java - 比较具有相同父类(super class)的 2 个子类实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13669459/

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