我很难理解下面的错误为什么会发生。如果#1可以,那么#2为什么不可以?
public interface IFoobar<DATA extends IFoobar> {
void bigFun();
}
class FoobarImpl<DATA extends IFoobar> implements IFoobar<DATA> {
public void bigFun() {
DATA d = null;
IFoobar<DATA> node = d; //#1 ok
d = node; //#2 error
}
}
最佳答案
因为DATA
是IFoobar
的一种,但不是相反。没什么不同:
String d = null;
Object o = d; //#1 ok
d = o; //#2 error