我正试图解决我遇到的继承问题。这是我目前的情况:
所以我的计划可以是活动列表(类Activities
),也可以是要做的事情列表(类Todos
)。
但是,如果我在Todos
中执行此操作:
private List<Todo> todos;
public List<Activity> getPlanning(){
return todos;
}
它说这些类型是不兼容的。
由于Todo
从Activity
延伸,我们不确定Todo
是否至少提供与Activity
相同的功能?
也许更重要的是:
(我不是UML的专家,如果我的图表中有错误,请原谅我)
答案 0 :(得分:2)
欢迎使用Java中的噩梦和糟糕的泛型实现。尝试使用public List<? extends Activity> getPlanning()
。
答案 1 :(得分:2)
如果Java允许您将List<Todos>
作为List<Activity
返回,则调用者可以在其中添加任何Activity
。显然,绝不允许这种情况发生。
您可以通过将返回类型更改为List<? extends Activity>
来使返回的列表成为只读。这将禁止将任何对象添加到列表中(null
除外或直接从同一列表中检索的对象)。