我想設計一個模型,其中我有一個具有相同超類的子對象列表的列表。此型號將是ListView的型號。超類是:具有相同超類的子對象列表的列表
public class Element implements Serializable {
private static final long serialVersionUID = 10121L;
private String value;
public Element(String value) {
this.value = value;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
@Override
public String toString() {
return "Element [value=" + value + "]";
}
}
其中一個子類是:
public class DateElement extends Element {
private static final long serialVersionUID = 10122L;
private DateTime date;
public DateElement(String value, DateTime date) {
super(value);
this.date = date;
}
public DateTime getDate() {
return date;
}
public void setDate(DateTime date) {
this.date = date;
}
@Override
public String toString() {
return "DateElement [date=" + date + ", value=" + getValue() + "]";
}
}
我實例名單的名單爲:
this.userMonitorMap = new ArrayList<List<? extends Element>>(0);
添加DateElement的名單userMonitorMap作爲:
List<DateElement> dateElements = getDateElements();
userMonitorMap.add(dateElements);
Upt這部分我沒有問題。但是ListView控件的人口有問題的代碼片段是:
ListView row = new ListView("row", userMonitorMap) {
@Override
protected void populateItem(ListItem rowItem) {
List<? extends Element> columnMap = (List<? extends Element>) rowItem;
ListView column = new ListView("column", columnMap) {
@Override
protected void populateItem(ListItem columnItem) {
Element element = (Element) columnItem; //The compile time error is here
}
};
rowItem.add(column);
}
};
我已經在我的代碼註釋的問題。我怎樣才能做到這一點?我需要什麼變化?
Eclipse IDE的紅色標記該行和錯誤消息是:不能從列表項轉換爲元素
感謝和問候。
發佈編譯器錯誤可能有幫助 – Mat 2011-05-17 10:01:57
@Mat我編輯了我的文章。 – 2011-05-17 10:08:08