标签:java uml enterprise-architect
我试图从EA UML类图生成Java代码.我定义了两个类,他们有一个Composition Relation船.
比方说,A类包含B类的List.
我能够在代码生成对话框中将默认集合类设置为List,并且它正确生成代码:
class B {
public List<B> m_B;
};
但是我无法自动生成import语句.如下:
import java.util.List;
class B {
public List<B> m_B;
};
我知道代码生成对话框中有一个部分,我可以指定完整的import语句,但我有很多类,我希望EA自动生成import语句.
我也摆弄了代码模板,但我无法在代码模板中导入除硬编码导入语句之外的任何内容.
宏
importPackagePath
importClassName
似乎是空的.
任何人都可以帮我修改代码模板来确定要完成的导入吗?
谢谢,
问候,
VIMAL
解决方法:
我认为你应该避开代码生成模板.这里的问题是集合类的处理超出了正常的代码生成.如果某个类的成员类型是另一个包中的类,则EA会生成正确的import语句 – 但前提是这些类存在于模型中,而collecion类不存在.
有三种方法可以解决这个问题:
1)接受生成的代码被破坏.
生成代码,然后在IDE(NetBeans,Eclipse或您正在使用的任何东西)中打开它,并让它在添加正确的import语句时采取有根据的猜测.
这很快捷,但您需要检查结果.还有一个风险:如果你的“B”类导入一个包含“List”类的包,编译器不会抱怨,但引用的“List”类不是来自java.util的类,这意味着你’没有得到你认为你做过的代码.
2)为集合类建模.
创建一个包含子项“util”和模板类“List”的包“java”,然后更改模型,使其与B的A … *关系不是,与此“List”类型的关系为“1” (不是B),但是用类型B实例化.对此的正确关系是模板绑定.
在建模集合类的过程中,将rt.jar导入到项目中.这需要花费很长时间,并确保禁用自动图表生成,否则可能会耗尽内存.但是,您将一劳永逸地导入所有实用程序类.
如果您想要安全,请从Java选项(工具 – 选项 – 源代码工程 – Java)中删除集合类,因此EA不会尝试使用它们.但是,如果您更改了所有关系,EA将不会使用已配置的集合类.
这导致了最正确的模型,并且还解决了如何引用其他实用程序类(例如Calendar)的问题,但是如果你有一个没有集合类的大型模型,那么可以做很多工作.
3)对集合类使用完全限定名称.
在Java选项中,而不是List< #TYPE#>输入java.util.List< #TYPE#>.如果类型由其完全限定名称引用,则Java编译器不需要import语句.
这非常快速和简单,生成的代码是正确的.缺点是代码变得有点笨重.
如果你只需要集合类来工作,我会选择这个.如果你想引用其他常用的实用程序类,我会说import rt.jar并重做模型.
标签:java,uml,enterprise-architect 来源: https://codeday.me/bug/20190613/1232833.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。