Java 在EMF中有可能将POJO作为ESuperType吗?
问题/问题 给定一个来自非EMF感知API的普通Java类,如Java 在EMF中有可能将POJO作为ESuperType吗?,java,eclipse,emf,ecore,Java,Eclipse,Emf,Ecore,问题/问题 给定一个来自非EMF感知API的普通Java类,如 public class BankAccount { String ownerName; int accountNumber; // ... } 另外,我们假设不允许我更改或重新编译这个类(因为它来自API) 有没有简单的方法可以将该类用作EMF中电子类的ESuperType?(当然,单个类只是一个例子。我需要包装一个由30-50个类组成的API…) 自己的想法 就我个人而言,我认为这是不可能开箱即用的
public class BankAccount {
String ownerName;
int accountNumber;
// ...
}
另外,我们假设不允许我更改或重新编译这个类(因为它来自API)
有没有简单的方法可以将该类用作EMF中电子类的ESuperType?(当然,单个类只是一个例子。我需要包装一个由30-50个类组成的API…)
自己的想法
就我个人而言,我认为这是不可能开箱即用的
我只能想到两种方法,都需要付出相当的努力,而且不容易实现
EBankAccount
,将ownerName
和accountNumber
作为EAttributes
)的Ecore模型以及一种实用方法/机制,通过将原始对象的字段复制到相应的EStructuralFeatures
中来包装原始对象,并添加负责同步这两个对象的EAdapter
sEObject
接口等)但也许EMF(或现有的扩展)有一些隐藏的特性,可以按照这些思路做一些事情,而我不知道 我不清楚您真正想要什么,但我将尝试描述几个选项 如果您只想扩展POJO(这是问题文本所建议的),答案是肯定的,您可以简单地向模型添加一个新的EClass,并在“实例类型名称”属性中引用POJO限定名称。然后您可以创建从这个类扩展而来的其他类,但是它的状态不会由EMF管理 但是如果您想让EMF像跟踪真正的EMF对象一样跟踪POJO状态(因此这些属性也是EstrestructuralFeature),那么我看不到其他解决方案,您真的需要完全在EMF中对其建模 在第二种情况下,您描述的两个选项似乎都是可能的。
如果将对象放置在非常具体的位置,那么这可能是一个很好的解决方案,因此只需要在特定的位置进行包裹和展开。否则,您将需要始终转换(包装/展开)对象
我不知道这有什么扩展。我不清楚您真正想要什么,但我将尝试描述几个选项 如果您只想扩展POJO(这是问题文本所建议的),答案是肯定的,您可以简单地向模型添加一个新的EClass,并在“实例类型名称”属性中引用POJO限定名称。然后您可以创建从这个类扩展而来的其他类,但是它的状态不会由EMF管理 但是如果您想让EMF像跟踪真正的EMF对象一样跟踪POJO状态(因此这些属性也是EstrestructuralFeature),那么我看不到其他解决方案,您真的需要完全在EMF中对其建模 在第二种情况下,您描述的两个选项似乎都是可能的。
如果将对象放置在非常具体的位置,那么这可能是一个很好的解决方案,因此只需要在特定的位置进行包裹和展开。否则,您将需要始终转换(包装/展开)对象