Java 具有相同超类的子对象列表

Java 具有相同超类的子对象列表,java,list,listview,inheritance,wicket,Java,List,Listview,Inheritance,Wicket,我正在尝试设计一个模型,其中我有一个具有相同超类的子对象列表。这个模型将是一个模型。超级类是: public class Element implements Serializable { private static final long serialVersionUID = 10121L; private String value; public Element(String value) { this.value = value;

我正在尝试设计一个模型,其中我有一个具有相同超类的子对象列表。这个模型将是一个模型。超级类是:

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() + "]";
    }   
}
其中一个子类是:

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);

this.userMonitorMap=new ArrayList列表项本身不是列表中的对象,它包含一个包含您的对象的模型。您应该使用:

Model<Element> elementModel = columnItem.getModel();
看看这些

您的代码应为:

ListView行=新建ListView(“行”,userMonitorMap){

@覆盖
受保护的void populateItem(ListItem rowItem){

Listposting编译器错误可能会有所帮助
Element element = columnItem.getModelObject();
        @Override
        protected void populateItem(ListItem rowItem) {
            List<? extends Element> columnMap = rowItem.getModelObject();
            ListView column = new ListView("column", columnMap) {

                @Override
                protected void populateItem(ListItem columnItem) {
                    Element element = columnItem.getModelObject();
                }
            };
            rowItem.add(column);
        }
    };