1
我剛開始弄懂泛型,我想確保我得到了這個正確的,任何幫助?這是一個正確的方式來使Java泛型行動?
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
}
調用CartService:
GroceryCartImpl gc = ............
GroceryCartItemImpl gci = ...........
CartService<GroceryCartImpl, GroceryCartItemImpl> cs =
new CartService<GroceryCartImpl, GroceryCartItemImpl>();
cs.addOrReplaceItem(gc, gci);
+1:比我自己的描述更具描述性,我在工具上進行了更正。 :) – 2009-10-17 07:28:52