向元素添加元素,该类型是通用java集合

时间:2016-08-12 00:33:06

标签: java generics solid-principles

假设IUncle是Uncle实现的接口。 假设我不会在类Child中使用具体的类,因为我希望Child可以与Iuncle的任何实现一起使用。 如何以对Uncle的任何实现方式起作用的方式更改Child(下面)的实现。

public class Child {

private List<IUncle> uncles;

public Child(List<IUncle> uncles){
    this.uncles = uncles;
}

public void addUncle(IUncle uncle) {
    this.uncles.add(uncle);
}

}

在主类中,我使用这个类:

List<Uncle> uncles = new ArrayList<Uncle>();
Child oneChild  = new Child(uncles);
oneChild.addUncle(new Uncle);

这根本不起作用!!!

请问,有人能给出正确的方法来处理java中的这种情况吗?

2 个答案:

答案 0 :(得分:0)

您遇到语法错误,我不确定您的Uncle课程是什么样的,但请尝试

oneChild.addUncle(new Uncle ());

您指定了添加Uncle的方法但未使用它。

此外,我认为您的IUncle界面(??)与您的对象Uncle相混淆。它们不是一回事,也不可互换。

答案 1 :(得分:0)

我之前的一位经理给出了答案。这很简单!

事实上,儿童班没有任何问题。问题出在主要课程中。哪个,应该是这样的:

List<IUncle> uncles = new ArrayList<IUncle>();
Child oneChild  = new Child(uncles);
oneChild.addUncle(new Uncle);

谢谢!