所以我在这里有这个代码:想知道为什么下面的两个例子给出了运行时错误和编译错误
public abstract class Person<Mate> {
public String name;
public abstract Person<?> mate(Mate m);
public static class Male extends Person<Person<?>.Female> {
public Person<?> mate(Person<?>.Female m) {
return null;
}
}
public class Female extends Person<Male> {
public Person<?> mate(Male m) {
return null;
}
}
}
任何人都可以告诉我为什么这个代码示例会产生运行时错误
Person p = new Male();
p.mate(p);
虽然这个给出了编译错误
Person p<Female> = new Male();
p.mate(p); // Argument is of incorrect type.