java设置列表<?扩展接口1>
尝试做一些类似于:
public interface Order {
public List<? extends OrderItem> getItems();
public void setItems(List<? extends OrderItem> items);
}
public interface OrderItem {
// stuff
}
public class OrderItemImp implements OrderItem {
// stuff for class impl
}
public class OrderImp implements Order {
public List<OrderItemImp> getItems() {
return items;
}
public void setItems(List<OrderItemImp> items) {
this.items = items;
}
}
编译器抱怨setItems方法。我怎样才能做到这一点?谢谢
# 1 楼答案
在
Order
接口定义中,这些方法看起来像一对get/set方法,即逻辑上是一个属性。在这种情况下,他们需要有相同的类型。您需要通过命名类型参数将它们连接在一起:不完全确定这在Java中是否是正确的语法,但基本上这两个方法都必须引用完全相同的类型
# 2 楼答案
试着替换
与
。现在是generic method