尝试做类似的事情:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
编译器抱怨setItems方法.我怎样才能做到这一点?谢谢.
在您的Order接口定义中,这些方法看起来像一对get/set方法,即逻辑上属性.在这种情况下,他们需要具有相同的类型.您需要通过命名类型参数将它们绑定在一起:
public interface Order<T extends OrderItem> {
public List<T> getItems();
public void setItems(List<T> items);
}
Run Code Online (Sandbox Code Playgroud)
不完全确定这是否是Java中的正确语法,但基本上两种方法最终都必须引用完全相同的类型.
| 归档时间: |
|
| 查看次数: |
408 次 |
| 最近记录: |