Java 如何生成私有/受保护的方法&;使用EMF的变量?
我希望使用基于UML模型的genmodel生成Java代码 我正在使用Papyrus的Eclipse Oxygen、UML模型(使用了Ecore概要文件),以便使用GenModel向导生成Ecore,最终生成模型Java代码(标准Eclipse插件) 我已将生成的源代码与手写的源代码分开,以避免使用Java 如何生成私有/受保护的方法&;使用EMF的变量?,java,eclipse,emf,Java,Eclipse,Emf,我希望使用基于UML模型的genmodel生成Java代码 我正在使用Papyrus的Eclipse Oxygen、UML模型(使用了Ecore概要文件),以便使用GenModel向导生成Ecore,最终生成模型Java代码(标准Eclipse插件) 我已将生成的源代码与手写的源代码分开,以避免使用@generated NOT+手动修改解决方案:) 无论我是否更改属性的UML可见性参数,生成的模型代码中都没有任何更改(所有内容都是公共的) 我在我读过的文档(EMF帮助,Vogella博客,opC
@generated NOT
+手动修改解决方案:)
无论我是否更改属性的UML可见性参数,生成的模型代码中都没有任何更改(所有内容都是公共的)
我在我读过的文档(EMF帮助,Vogella博客,opCoach博客,谷歌…)中没有找到关于这样做可能性的信息
我的问题是:
- GenModel处理是否可能考虑UML对象的可见性
- 这是否可以设置UML Ecore概要文件以强制生成代码的可见性?(到目前为止,我已经试过了,但没有成功)
suppressedGetVisibility
和suppressedSetVisibility
genmodel注释来抑制接口中的getter和setter生成(suppressedAssetVisibility
和suppressedUnSetVisibility
也存在)。它们将只出现在实现类中
另一种选择可能是更改元模型并组合模型元素,以便它们实现两种不同类型的接口:一种用于描述公共API的公共接口,另一种用于内部API的内部接口。然后只向用户公开公共接口
这些选项当然不同于在UML中定义每个可见性,但可能适合您的用例 多亏了@Kapep,解决方案是查看应用于UML模型相应属性的EReference(或EAttribute(如果需要)构造型的
visibility
属性。此处所做的更改不会影响实现的生成,但会更改生成的界面中显示的内容:
- 未指定(默认):存在setter和getter方法
- 无:setter和getter方法不存在
- 只读:仅显示获取者
然后,您就可以自由地使用人造代码来扩展生成的代码,以使用/显示getter和setter所需的方式 非常感谢,我将查看
suppressedGetVisibility
文档,看看是否可以通过UML模型进行设置!