这是使用Java泛型的正确方法吗?
我刚开始搞乱泛型,我想确保我做对了,有什么帮助吗这是使用Java泛型的正确方法吗?,java,generics,Java,Generics,我刚开始搞乱泛型,我想确保我做对了,有什么帮助吗 public interface Cart<T extends CartItem> { public void setItems(List<T> items); public List<T> getItems(); } public interface CartItem { public BigDecimal getQty(); public void setQty(BigDe
public interface Cart<T extends CartItem> {
public void setItems(List<T> items);
public List<T> getItems();
}
public interface CartItem {
public BigDecimal getQty();
public void setQty(BigDecimal qty);
// more
}
public class CartService<T extends Cart<E>, E extends CartItem> {
public void addOrReplaceItem(T cart, E newCartItem) {
List<E> items = cart.getItems();
int position = items.indexOf(newCartItem);
if(position > -1) {
E existingItem = items.get(position);
existingItem.setQty(existingItem.getQty()
.add(newCartItem.getQty()));
} else {
items.add(newCartItem);
}
}
}
public interface GroceryCart extends Cart<GroceryCartItemImpl>{
// more
}
public interface GroceryCartItem extends CartItem {
// more
}
public class GroceryCartItemImpl implements Serializable, GroceryCartItem {
// more
}
public class GroceryCartImpl implements Serializable, GroceryCart {
// more
}
公共接口购物车{
公共项目(列表项目);
公共列表getItems();
}
公共接口项{
public BigDecimal getQty();
公共作废设置数量(大十进制数量);
//更多
}
公共服务{
公共无效添加或替换项(T cart,E newCartItem){
List items=cart.getItems();
int position=items.indexOf(newCartItem);
如果(位置>-1){
E existingItem=items.get(位置);
existingItem.setQty(existingItem.getQty()
.add(newCartItem.getQty());
}否则{
items.add(newCartItem);
}
}
}
公共界面GroceryCart扩展购物车{
//更多
}
公共界面GroceryPartItem扩展CartItem{
//更多
}
公共类GroceryPartItemImpl实现可序列化的GroceryPartItem{
//更多
}
公共类GroceryCartImpl实现可序列化的GroceryCart{
//更多
}
呼叫服务:
GroceryCartImpl gc = ............
GroceryCartItemImpl gci = ...........
CartService<GroceryCartImpl, GroceryCartItemImpl> cs =
new CartService<GroceryCartImpl, GroceryCartItemImpl>();
cs.addOrReplaceItem(gc, gci);
GroceryCartImpl gc=。。。。。。。。。。。。
食品杂货商部门简单gci=。。。。。。。。。。。
CartService cs=
新服务();
cs.添加或替换项目(gc、gci);
您的代码看起来不错@sudonoob的语句“extends应该是实现的”是错误的
我同意@sudo noob,您应该更改行:
GroceryCartImpl gc = ............
GroceryCartItemImpl gci = ...........
…与:
GroceryCart gc = ............
GroceryCartItem gci = ...........
但这与泛型无关。您的代码看起来不错@sudonoob的语句“extends应该是实现的”是错误的 我同意@sudo noob,您应该更改行:
GroceryCartImpl gc = ............
GroceryCartItemImpl gci = ...........
…与:
GroceryCart gc = ............
GroceryCartItem gci = ...........
但这与泛型无关。+1:比我自己的描述更具描述性,我在工具上得到了纠正。:)+1:比我自己的描述更具描述性,我在工具上得到了纠正。:)