这是使用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:比我自己的描述更具描述性,我在工具上得到了纠正。:)