问题/问题是否有可能在EMF中拥有ESuperType的POJO?
给出一个简单的Java类与非EMF感知API来如
public class BankAccount {
String ownerName;
int accountNumber;
// ...
}
,也让我们假设我不允许更改或重新编译这个类(因为它来自API)。
是否有任何简单的方法可以将此类用作EMF中的EClass的ESuperType? (当然,单个类只是一个例子,我需要包装一个由30-50个类组成的API ...)。
自己的想法
就个人而言,我认为这是不可能的开箱。
我只能想到两种方式,都有相当的努力,不容易实现。
创建反映原类(
EBankAccount
,具有ownerName
和accountNumber
作为EAttributes
)Ecore模型和公用方法/机制,通过复制其字段到对应EStructuralFeatures
包装了原始对象,并将EAdapter
S的负责同步两个对象。挂钩到EMF.CodeGen中,并在那里做一些魔术,这样就可以在生成的代码中使原始类作为超类,同时仍然实现EMF合约(=实现接口等) 。
但也许有一些EMF(或现有的扩展)隐藏功能,沿着这些线做一些事情,我不知道它?
+1为“实例类型名称”属性。我从来没有用过它。我会玩弄它,看看它有什么... –