さらに私の質問の質問
私の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();
}
InfraNameListModel
public interface InfraNameListModel {
List<InfraNameModel> getResults();
void setResults(List<InfraNameModel> infraNameModel);
}
InfraNameListModelImpl
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;
}
}
InfraNameModel
public interface InfraNameModel {
String getInfraName();
void setInfraName(String infraName);
}
InfraNameModelImpl
public class InfraNameModelImpl implements InfraNameModel {
private String infraName;
@Override
public String getInfraName() {
return infraName;
}
@Override
public void setInfraName(String infraName) {
this.infraName = infraName;
}
}
私の使い方
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());
すべて正常に動作します。しかし、質問があります。
「結果」には、さまざまなタイプの Bean が含まれる場合があります。すべてのタイプの一般的なリストを作成するにはどうすればよいですか?
そうしてみる
public interface ResultsModel<T> {
List<T> getResults();
void setResults(List<T> infraNameModel);
}
InfraNameResultsModelImpl
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;
}
}
しかし、エラー = (
すべてのタイプの結果に共通のリストを実装することは可能ですか?
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());