双向对象 - 对话

时间:2013-03-28 10:23:08

标签: java generics ejb

我必须将JPA实体对象处理为带注释的JAXB对象,反之亦然。

两个类类型如下所示:

@Entity
public Entity{
private String fieldA;
private int fieldB;
private Entity2 fieldC;
// + Getters and Setters
}

@RootElement
public JAXBEntity (extends AbstractJAXBEntity<Entity>){
private String fieldA;
private int fieldB;
private String fieldC;
// + Getters and Setters
public JAXBEntity(Entity entity) {...}
public Entity getEntity() {...}
}

我需要的方法是:Entity <-> JAXBEntity, List<Entity> <-> List<JAXBEntity>

我有很多这样的类对,所以我正在寻找一种非常通用的解决方案,每对最少的单独实现。如果我需要在每对constructor中仅实现getEntityJAXBEntity,那么最佳情况就是。

我想到了以下类结构:

public abstract class AbstractJAXBEntity<Entity>

@Stateless
public EntityConversation <JAXBEntity extends AbstractJAXBEntity>

我的想法是,我可以在JAXBEntity的实例中获取EntityConversation的泛型类型,然后是Entity的类型。当我有类型时,我可以通过Reflections轻松创建对象。

但由于type-erasure,这有点复杂。 另外EntityConversation只能使用无参数构造函数。否则我将无法用@EJB注入它。

这种做法是否切合实际,您是否认为我可以获得任何类型的方法?或者有没有其他方法可以做到这一点,我没有看到?

0 个答案:

没有答案