Java 接口扩展LinkedList泛型上的接口

Java 接口扩展LinkedList泛型上的接口,java,generics,interface,Java,Generics,Interface,我对链表中的接口扩展接口有点困惑。 也许一点代码就能最好地解释它 接口A public interface Fruit { public String getColor(); } 接口B public interface Fruit_alias extends Fruit { } 橙色类 public class Orange implements Fruit { @Override public String getColor() { retu

我对链表中的
接口扩展接口
有点困惑。 也许一点代码就能最好地解释它

接口A

public interface Fruit {
    public String getColor();
}
接口B

 public interface Fruit_alias extends Fruit {
 }
橙色类

public class Orange implements Fruit {

    @Override
    public String getColor() {
        return "Orange";
    }
    public void pellOrange(){
    }
}
Main

public class Main {
    public static void main(String[] args){
    LinkedList<Fruit_alias> f1=new LinkedList<Frucht_alias>();
    f1.push(new Orange()); //gives me an Error

    LinkedList<Fruit> f2=new LinkedList<Frucht>();
    f2.push(new Orange()); // works fine
}
公共类主{
公共静态void main(字符串[]args){
LinkedList f1=新建LinkedList();
f1.push(new Orange());//给我一个错误
LinkedList f2=新的LinkedList();
推(新橙色());//工作正常
}

为什么我不能在这里使用
Orange
?这让我觉得很奇怪,因为我希望接口的行为像一个从更一般的对象继承的对象。

水果别名不是橙色的超类,所以你不能这样做。

因为
水果别名
不是橙色的超类,但
水果
是。超级类型可以引用继承关系中的子类型。请将声明更改为:

public class Orange implements Fruit_alias {

    @Override
    public String getColor() {
        return "Orange";
    }
    public void pellOrange(){
    }
}

Orange
实现
水果
,而不是
水果别名