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 仅涵盖 Stringintboolean 和简单日期,但您可以将大多数值作为 String 传递,然后解析。