【发布时间】:2014-07-31 15:36:23
【问题描述】:
我有一个关于泛型、继承和接口的基本问题。
给定以下代码:
import java.util.ArrayList;
import java.util.List;
public class Generics {
private Class1 obj1 = new Class1();
public Generics() {
Class1 obj1 = new Class1();
Class2 obj2 = new Class2();
Class2 obj3 = new Class2();
Class2 obj4 = new Class2();
List<Class2> obj1Children = new ArrayList<Class2>();
obj1Children.add(obj2);
obj1Children.add(obj3);
obj1Children.add(obj4);
}
public static void main(String[] args) {
Generics g = new Generics();
}
private class Class1 implements I1 {
private List<I2> children;
@Override
public List<I2> getChildren() {
return children;
}
@Override
public void setChildre(List<I2> children) {
this.children = children;
}
}
private class Class2 implements I2 {
}
private interface I1 {
List<I2> getChildren();
void setChildre(List<I2> children);
}
private interface I2 {
}
}
在 Class1 中,如果您更改线路:
private List<I2> children;
与
private List<Class2> children;
然后我有一个编译错误告诉我它不能将 List 转换为 List。
我很困惑,因为我认为接口的全部意义在于摆脱事物的实现方面。
谁能解释一下?
【问题讨论】:
标签: java generics inheritance interface