【发布时间】:2018-12-27 03:34:33
【问题描述】:
我有一个类,我采用一个泛型类型列表。现在我正在尝试遍历该列表以获取该类的值。在getOrderAmount() 方法中我尝试迭代。
@Document(collection = Cart.FIELDS.COLLECTION)
public class Cart extends BaseOrderEntity {
public interface FIELDS extends BaseOrderEntity.FIELDS {
String COLLECTION = "cart";
String LIST_ORDERS = "orderList";
String CART_TYPE = "cartType";
}
@Field(value = FIELDS.LIST_ORDERS)
private List<T> orderList;
@Field(value = FIELDS.CART_TYPE)
private Integer cartType;
public List<T> getOrderList() {
return orderList;
}
public void setOrderList(List<T> orderList) {
this.orderList = orderList;
}
public Integer getCartType() {
return cartType;
}
public void setCartType(Integer cartType) {
this.cartType = cartType;
}
@Override
public RefCollectionType getRefCollectionType() {
if (T.class.getClass() == FoodItemOrderDetails.class.getClass()) {
return RefCollectionType.FOOD;
} else if (T.class.getClass() == LaundryItemOrderDetails.class.getClass()) {
return RefCollectionType.LAUNDRY;
} else if (T.class.getClass() == HousekeepingItemOrderDetails.class.getClass()) {
return RefCollectionType.HOUSEKEEPING;
}
return RefCollectionType.FOOD;
}
@Override
public double getOrderAmount() {
double totalfoodOrderAmount = 0.0;
for (FoodItemOrderDetails foodItem : orderList) {
totalfoodOrderAmount = totalfoodOrderAmount + (foodItem.getPrice() * foodItem.getQuantity());
}
return totalfoodOrderAmount;
}
}
泛型类在这里。
FoodItemOrderDetails
LaundryItemOrderDetails
HousekeepingItemOrderDetails
【问题讨论】:
-
问题是什么?你有什么错误吗?
-
怎么样
for(T item : list) { if(item instanceof FoodItemOrderDetails) //do logic}} -
这个问题令人困惑的部分是......那些
@Document、FIELDS、RefCollectionType是关于什么的?是否与您的问题有关? -
这不正确,不会编译。 T的通用参数定义在哪里。您缺少某事。喜欢
class Cart<T> extends ...。否则,必须使用 List>. “键入”列表 -
T定义在哪里?
标签: java loops java-8 iteration