Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java泛型语法设置器_Java_Generics - Fatal编程技术网

Java泛型语法设置器

Java泛型语法设置器,java,generics,Java,Generics,我有这两个类,我需要从父类初始化子类filds public class A { protected LazyFacade<E> list; protected LazyDataModel<E> model; protected MyObject myObject; protected LazyDataModel<E> buildModel() { lazyModel = new LazyDataMo

我有这两个类,我需要从父类初始化子类filds

public class A {

    protected LazyFacade<E> list;
    protected LazyDataModel<E> model;
    protected MyObject myObject;

    protected LazyDataModel<E> buildModel() {
            lazyModel = new LazyDataModel<E>() {
                public List<E> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, Object> filters) {
                    List<E> resultList = null;
                    try {
                        setRowCount((int) list.countObjects(myObject, filters));
                        resultList = list.listObject(myObject, first, pageSize, sortField, sortOrder, filters);
                    } catch (PersistenceException e) {
                    }
                    return resultList;
                }
            };
        return lazyModel;
    }
    //getters setters
}

public class B extends A {

    public B() {
        this.list = new LazyFacade<OtherClass>();   **//is it correct way to instantiate the list???**
        this.myObject = getObjectInDataBase();
        this.model = buildModel();                  **//the model must have the same class of LazyFacade, in this case OtherClass.
                                                    //How could i do it?**
    }
}
公共A类{
受保护懒汉名单;
保护懒散数据模型;
受保护的肌体;
受保护的LazyDataModel buildModel(){
lazyModel=新的LazyDataModel(){
公共列表加载(int-first、int-pageSize、字符串排序字段、排序器排序器、映射过滤器){
列表结果列表=null;
试一试{
setRowCount((int)list.countObjects(myObject,filters));
resultList=list.listObject(myObject,first,pageSize,sortField,sortOrder,filters);
}捕获(持久异常e){
}
返回结果列表;
}
};
返回lazyModel;
}
//吸气剂二传手
}
公共类B扩展了A{
公共图书馆B(){
this.list=new LazyFacade();**//实例化列表的方法正确吗**
this.myObject=getObjectInDataBase();
this.model=buildModel();**//该模型必须具有相同的LazyFacade类,在本例中为OtherClass。
//我怎么做呢**
}
}

尝试将
公共A类{
更改为
公共A类{

问题出在哪里?你认为
E
是什么?好吧,丹尼尔,但我不想在类B中创建一个新的a。我需要初始化子类中的字段,因为只有在子类中我才知道参数E type。this.list=new LazyFacade();似乎可以工作。但我如何在子类中设置模型字段的E参数?抱歉,也许我不理解这个问题,但我认为您需要在类声明行中包含该泛型,否则您将得到一个错误。此外,要实例化超类的字段,您可能需要更改
this.model=buildModel()
this.model=super.buildModel();
尝试将B类更改为
public类B扩展A{public B(){this.list=new LazyFacade();this.myObject=getobjectinadabase();this.model=buildModel();}
然后使用以下命令实例化B对象:
B test=new B();