我希望使用基于UML模型的genmodel生成Java代码。
我正在研究Eclipse Oxygen,来自Papyrus的UML模型(使用Ecore配置文件),以便使用GenModel向导生成Ecore,最终生成模型Java代码(标准Eclipse插件)。
我已将生成的源与手写源分开,因此应避免使用@Generated NOT
+手动修改解决方案:)
我是否更改了属性的UML可见性参数,生成的模型代码中没有任何变化(一切都是公开的)。
我没有在我读过的文档中找到有关这种可能性的信息(EMF帮助,Vogella博客,opCoach博客,Google ......)
我的问题是这些:
答案 0 :(得分:2)
据我所知,不可能设置getter / setter的访问修饰符。我认为这里的主要问题是所有接口方法都必须是公共的,因此您无法在生成的接口中获得任何其他可见性。而且您通常不希望直接向我们提供实施课程。
您可以尝试从界面中删除getter / setter。显然,有suppressedGetVisibility
和suppressedSetVisibility
genmodel注释来抑制界面中的getter和setter生成(suppressedIsSetVisibility
和suppressedUnSetVisibility
也存在)。它们只会出现在实现类中。
另一种选择可能是更改元模型并组合模型元素,以便它们实现两种不同的接口:一个描述公共API的公共接口和一个内部API的内部接口。然后只将公共接口公开给用户。
这些选项肯定与定义UML中的每个可见性不同,但可能适用于您的用例。
答案 1 :(得分:1)
感谢@Kapep,解决方案是查看应用于相应属性的 EReference (或 EAttribute ,如果需要)构造型的visibility
属性UML模型。在那里进行的更改不会影响实现的生成,但会更改生成的界面中显示的内容:
然后你可以自由使用人工代码来扩展生成的代码,以便使用/显示你想要的getter和setter的方式!