Java。将通用列表转换为工厂中的对象列表
Java. Cast generic List to list of objects from factory
是否可以从工厂模式将对象列表转换为对象列表?
我有一个 Jersey REST 端点,我将数据从一个环境迁移到另一个环境。我希望 post 一些对象列表并将它们转换为从工厂模式中获取的正确对象
@Path("/migrateTableAtOnce")
@Consumes(MediaType.APPLICATION_JSON)
public <T> Response saveObjectIntoDb(List<T> listOfObj) {
// if listOfObj.getTableName() == "MW_ID_GENERATOR" tableOject gets new MwIdGenerator()
myEntity tableObject = myEntityFactory.getTable(listOfObj.getTableName());
return Response.status(201).entity("ok").build();
}
有没有可能我只有一个 post 方法是那个通用列表。我有 20 个对象需要传输,但我不想编写 20 个 post 方法 :( 我不知道该怎么做。
我的方法之一是这样的:
@POST
@Path("/migrateTableAtOnceMwIdGenerator")
@Consumes(MediaType.APPLICATION_JSON)
public Response saveObjectIntoDb(List<MwIdGenerator> listOfObj) {
Boolean result = false;
String dbResponse ="";
try {
dbResponse = obtainFacade().saveToDb(listOfObj);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return Response.status(201).entity(result+" "+dbResponse).build();
}
有没有更好的办法解决这个问题?
我 post 正文作为自定义对象,并且在该对象中有一个列表,例如;
@POST
@Path("/migrateTableAtOnceMwIdGenerator")
@Consumes(MediaType.APPLICATION_JSON)
public Response saveObjectIntoDb(CustomObject object) {
List <Stuff>list = object.getList();
和对象
public class CustomObject extends Serializable {
public List <Stuff>sList = null;
public List <OtherStuff>osList = null;
public List <TheBestStuff>tbsList = null; //etcetc
public List getList ()
{
return list;
}
public void setList(List <Stuff>list)
{
this.list = list;
}
public List getOsList ()
{
return osList ;
}
public void setList(List <OtherStuff>osList)
{
this.osList = osList;
}
public List getTbsList ()
{
return tbsList;
}
public void setTbsList(List <TheBestStuff>tbsList)
{
this.tbsList = tbsList;
}
并且 Jersey 可以将 json
对象解析为您的自定义对象,前提是您可以将 class 的字段作为 json 传递。当您使用 json
传递数据时,您的实现受到限制,因为 json 仅涵盖 String
、int
、boolean
和简单日期,但您可以将大多数值作为 String
传递,然后解析。
是否可以从工厂模式将对象列表转换为对象列表?
我有一个 Jersey REST 端点,我将数据从一个环境迁移到另一个环境。我希望 post 一些对象列表并将它们转换为从工厂模式中获取的正确对象
@Path("/migrateTableAtOnce")
@Consumes(MediaType.APPLICATION_JSON)
public <T> Response saveObjectIntoDb(List<T> listOfObj) {
// if listOfObj.getTableName() == "MW_ID_GENERATOR" tableOject gets new MwIdGenerator()
myEntity tableObject = myEntityFactory.getTable(listOfObj.getTableName());
return Response.status(201).entity("ok").build();
}
有没有可能我只有一个 post 方法是那个通用列表。我有 20 个对象需要传输,但我不想编写 20 个 post 方法 :( 我不知道该怎么做。
我的方法之一是这样的:
@POST
@Path("/migrateTableAtOnceMwIdGenerator")
@Consumes(MediaType.APPLICATION_JSON)
public Response saveObjectIntoDb(List<MwIdGenerator> listOfObj) {
Boolean result = false;
String dbResponse ="";
try {
dbResponse = obtainFacade().saveToDb(listOfObj);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return Response.status(201).entity(result+" "+dbResponse).build();
}
有没有更好的办法解决这个问题?
我 post 正文作为自定义对象,并且在该对象中有一个列表,例如;
@POST
@Path("/migrateTableAtOnceMwIdGenerator")
@Consumes(MediaType.APPLICATION_JSON)
public Response saveObjectIntoDb(CustomObject object) {
List <Stuff>list = object.getList();
和对象
public class CustomObject extends Serializable {
public List <Stuff>sList = null;
public List <OtherStuff>osList = null;
public List <TheBestStuff>tbsList = null; //etcetc
public List getList ()
{
return list;
}
public void setList(List <Stuff>list)
{
this.list = list;
}
public List getOsList ()
{
return osList ;
}
public void setList(List <OtherStuff>osList)
{
this.osList = osList;
}
public List getTbsList ()
{
return tbsList;
}
public void setTbsList(List <TheBestStuff>tbsList)
{
this.tbsList = tbsList;
}
并且 Jersey 可以将 json
对象解析为您的自定义对象,前提是您可以将 class 的字段作为 json 传递。当您使用 json
传递数据时,您的实现受到限制,因为 json 仅涵盖 String
、int
、boolean
和简单日期,但您可以将大多数值作为 String
传递,然后解析。