抱歉,如果我的术语不正确,我仅在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();
}