Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/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 不同对象的GWT自动bean列表_Java_Gwt_Autobean - Fatal编程技术网

Java 不同对象的GWT自动bean列表

Java 不同对象的GWT自动bean列表,java,gwt,autobean,Java,Gwt,Autobean,关于我的问题 我的JSON { "status" : "SUCCESS", "count" : 1, "type" : "InfraNameModel", "results" : [{ "infraName" : "TEST1" } ] } IBeanFactory public interface IBeanFactory extends AutoBeanFactory { IBeanFactory IN

关于我的问题

我的JSON

{
    "status" : "SUCCESS",
    "count" : 1,
    "type" : "InfraNameModel",
    "results" : [{
            "infraName" : "TEST1"
        }
    ]
}
IBeanFactory

public interface IBeanFactory extends AutoBeanFactory {
    IBeanFactory INSTANCE = GWT.create(IBeanFactory.class);
    AutoBean<InfraNameModel> infraName();
    AutoBean<InfraNameListModel> results();
}
public interface InfraNameListModel {
    List<InfraNameModel> getResults();    
    void setResults(List<InfraNameModel> infraNameModel);
}
public class InfraNameListModelImpl implements InfraNameListModel {  
    private List<InfraNameModel> results;    
    @Override
    public List<InfraNameModel> getResults() {
        return results;
    }

    @Override
    public void setResults(List<InfraNameModel> results) {
        this.results = results;
    }
}
public interface InfraNameModel {
    String getInfraName();   
    void setInfraName(String infraName);
}
public class InfraNameModelImpl implements InfraNameModel {
    private String infraName;
    @Override
    public String getInfraName() {
        return infraName;
    }
    @Override
    public void setInfraName(String infraName) {
        this.infraName = infraName;
    }
}
public class InfraNameResultsModelImpl implements ResultsModel<InfraNameModel> {
    private List<InfraNameModel> results;
    @Override
    public List getResults() {
        return results;
    }
    @Override
    public void setResults(List infraNameModel) {
        this.results = results;
    }
}
infranamemodeimpl

public interface IBeanFactory extends AutoBeanFactory {
    IBeanFactory INSTANCE = GWT.create(IBeanFactory.class);
    AutoBean<InfraNameModel> infraName();
    AutoBean<InfraNameListModel> results();
}
public interface InfraNameListModel {
    List<InfraNameModel> getResults();    
    void setResults(List<InfraNameModel> infraNameModel);
}
public class InfraNameListModelImpl implements InfraNameListModel {  
    private List<InfraNameModel> results;    
    @Override
    public List<InfraNameModel> getResults() {
        return results;
    }

    @Override
    public void setResults(List<InfraNameModel> results) {
        this.results = results;
    }
}
public interface InfraNameModel {
    String getInfraName();   
    void setInfraName(String infraName);
}
public class InfraNameModelImpl implements InfraNameModel {
    private String infraName;
    @Override
    public String getInfraName() {
        return infraName;
    }
    @Override
    public void setInfraName(String infraName) {
        this.infraName = infraName;
    }
}
public class InfraNameResultsModelImpl implements ResultsModel<InfraNameModel> {
    private List<InfraNameModel> results;
    @Override
    public List getResults() {
        return results;
    }
    @Override
    public void setResults(List infraNameModel) {
        this.results = results;
    }
}
我如何使用

            InfraNameListModel infraNameListModel = beanFactory.deserializeFromJson(jsonParser.getResultsJSON());
            logger.info(infraNameListModel.toString());
            List<InfraNameModel> infraNameModelList = infraNameListModel. getResults();
            logger.info(infraNameModelList.toString());
            InfraNameModel infraNameModelImpl = infraNameModelList.get(0);
            logger.info(infraNameModelImpl.toString());
InfraNameListModel InfraNameListModel=beanFactory.deserializeFromJson(jsonParser.getResultsJSON());
logger.info(infraNameListModel.toString());
List infraNameModelList=infraNameListModel。getResults();
logger.info(infraNameModelList.toString());
InfraNameModel infraNameModelImpl=infraNameModelList.get(0);
logger.info(infranamemodeimpl.toString());
一切正常。但我有一个问题

在“结果”中可以出现不同类型的bean。如何为所有类型创建一个通用列表

我试着这么做

public interface ResultsModel<T> {
    List<T> getResults();
    void setResults(List<T> infraNameModel);
}
公共接口结果模型{
List getResults();
void setResults(列出infraNameModel);
}
InfraNameResultsModelImpl

public interface IBeanFactory extends AutoBeanFactory {
    IBeanFactory INSTANCE = GWT.create(IBeanFactory.class);
    AutoBean<InfraNameModel> infraName();
    AutoBean<InfraNameListModel> results();
}
public interface InfraNameListModel {
    List<InfraNameModel> getResults();    
    void setResults(List<InfraNameModel> infraNameModel);
}
public class InfraNameListModelImpl implements InfraNameListModel {  
    private List<InfraNameModel> results;    
    @Override
    public List<InfraNameModel> getResults() {
        return results;
    }

    @Override
    public void setResults(List<InfraNameModel> results) {
        this.results = results;
    }
}
public interface InfraNameModel {
    String getInfraName();   
    void setInfraName(String infraName);
}
public class InfraNameModelImpl implements InfraNameModel {
    private String infraName;
    @Override
    public String getInfraName() {
        return infraName;
    }
    @Override
    public void setInfraName(String infraName) {
        this.infraName = infraName;
    }
}
public class InfraNameResultsModelImpl implements ResultsModel<InfraNameModel> {
    private List<InfraNameModel> results;
    @Override
    public List getResults() {
        return results;
    }
    @Override
    public void setResults(List infraNameModel) {
        this.results = results;
    }
}
公共类InfraNameResultsModelImpl实现ResultsModel{
私人名单结果;
@凌驾
公共列表getResults(){
返回结果;
}
@凌驾
public void setResults(列出infraNameModel){
这个结果=结果;
}
}
但错误=(

是否可以为所有类型的结果实现一个通用列表

            ResultsModel<InfraNameModel> resultsModel = beanFactory.deserializeFromJson(ResultsModel.class,jsonParser.getResultsJSON());
            logger.info(resultsModel.toString());
            List<InfraNameModel> infraNameModelList = resultsModel. getResults();
            logger.info(infraNameModelList.toString());
            InfraNameModel infraNameModelImpl = infraNameModelList.get(0);
            logger.info(infraNameModelImpl.toString());
ResultsModel ResultsModel=beanFactory.deserializeFromJson(ResultsModel.class,jsonParser.getResultsJSON());
logger.info(resultsModel.toString());
List infraNameModelList=resultsModel.getResults();
logger.info(infraNameModelList.toString());
InfraNameModel infraNameModelImpl=infraNameModelList.get(0);
logger.info(infranamemodeimpl.toString());

Autobeans不支持任意子类型,但您可以通过重新解码Splittable来接近它,请参阅以获取想法。如果这没有帮助,请使用详细信息更新问题,我将试一试?我无法确定此问题=(((