2 つのサブクラス (学生、教師) とスーパークラス (職業) があります。
生徒からオブジェクト A を作成し、教師からオブジェクト B を作成しました。
Student A = new Student();
Teacher B = new Teacher();
そして、オブジェクトを引数として取り、ブール値を返す静的メソッドを既に作成しました。
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() メソッドを正しく使用できないのはなぜですか?