首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从MTL语言的超类中获取抽象方法

如何从MTL语言的超类中获取抽象方法
EN

Stack Overflow用户
提问于 2013-05-17 00:15:28
回答 1查看 490关注 0票数 0

我正在使用Acceleo-MTL来生成Java类。如何从我的抽象超类中获取所有抽象方法?

为了获得简单的操作和接口,我使用以下命令:

代码语言:javascript
运行
复制
[comment]Operators[/comment]
[for (o : Operation | class.getOperations())]
[o.generateOperation()/]
[/for]

[comment]Interface Methods[/comment]
[for (interf : Interface | class.getImplementedInterfaces())]
[for (o : Operation | interf.ownedOperation)]
[o.generateInterace()/]
[/for]
[/for]

是否存在用于抽象方法的getter方法,例如接口的getImplementedInterfaces()

EN

回答 1

Stack Overflow用户

发布于 2013-05-17 17:12:39

这完全取决于您的元模型以及如何导航它。IIRC,Class.getImplementedInterfaces()是来自UML的东西,所以我假设您正在使用它。

此外,您似乎想要做的是“检索给定分类器的所有操作,包括继承的操作”。为了满足这样的需求,永远不应该有任何理由自己在超类和接口层次上导航。在统一建模语言中,这是通过Classifier.getAllOperations()完成的,这意味着您可以通过:

代码语言:javascript
运行
复制
[for (o : Operation | class.getAllOperations())]
[o.generateOperation()/]
[/for]

如果您绝对需要自己迭代接口和超类,请记住您需要递归地浏览整个层次结构:您的类的超类和接口,您的类的超类和接口,超类...直到继承树的根。您还必须处理UML的多重继承功能,从而解决它带来的潜在歧义。为此,您需要熟悉UML模型。例如,检索超类是通过Class.getSuperClasses()完成的。确定这些超类中是否有一个是抽象的是通过Class.isAbstract()完成的……诸若此类。

附带说明可能会对您有所帮助:您可以在工作区中导入UML元模型,以便快速了解其概念以及如何在其中导航。为此:

使用弹出窗口,导航到File > Import...

  • In并点击Next

  • Nothing to

  • 在此页面上更改,在筛选区域中再次点击Next

  • ,在左侧面板中输入Finish

  • ,使其显示在右侧面板中。

  • 点击change

现在,您的工作区中有一个名为org.eclipse.uml2.uml的新项目。您可以打开org.eclipse.uml2.uml\model\uml.ecore文件来查看UML元模型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16592570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档