抱歉,如果我的术语不正确,我仅在6周前才开始Java(和一般的OO编程)。

一项家庭作业给了我一个接口类:

public interface Example {
    void Function();
    //etc
}


然后,我有几个“实现”该接口类的类,例如:

public class myExample1 implements Example {
    void Function(){ stuff;}
    public void myExclusiveFunction() { stuff;}
        ...
}


myExample1类内部,我定义了Example内部的函数,但还向myExample1类添加了一些特定的函数。

在我的主程序中,我创建了一个LinkedList<Example> eList = new LinkedList<Example>。在该链接列表中,我存储了多种示例(myExample1,myExample2等)。我想做类似的事情:

eList.get(i).myExclusiveFunction();


但是,这将不起作用。编译器告诉我:


  对于示例类型,未定义方法myExclusiveFunction()。


如何使用此功能?我真的很想让LinkedList能够容纳任何Example子类的对象,而且我受到分配限制,不能编辑Example接口。

最佳答案

好吧,您有2个选择:

1-更改LinkedList以存储myExample1而不是Example

LinkedList<myExample1> eList


2-使用instanceof并将类强制转换为myExample1类型(混乱)。

 Example exObj = eList.get(i);
 if (exObj instance of myExample1) {
     ((myExample1)exObj).myExclusiveFunction();
 }

09-11 19:19