接口扩展了Linked List Generics上的Interface

时间:2013-12-05 21:00:38

标签: java generics interface

我对链接列表中的Interface extends Interface感到有些困惑。 可能一点点代码解释得最好

界面A

public interface Fruit {
    public String getColor();
}

接口B

 public interface Fruit_alias extends Fruit {
 }

Class Orange

public class Orange implements Fruit {

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

主要

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
}

为什么我不能在这里使用Orange?这对我来说很奇怪,因为我希望界面的行为就像一个继承自更一般对象的对象。

2 个答案:

答案 0 :(得分:1)

Fruit_alias不是Orange的超级类,所以你不能这样做。

答案 1 :(得分:1)

因为Fruit_alias不是Orange的超类,而Fruit是。{1}}。超类型可以在继承关系中引用子类型。将声明更改为:

public class Orange implements Fruit_alias {

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