java在Eclipse/EMF中是否可以将操作参数建模为vararg?
我试图找到一种方法,用vararg输入参数对操作建模
模型应该生成一个界面,如下所示
/**
* ...
* @generated
*/
public interface Content extends EObject {
/**
* ...
* @generated
*/
List<Definition> getDefinitionsByLabels(String... label);
}
请不要使用变通方法回答,因为我正在尝试更新现有(大型)代码库的模型(该代码库是“手动”在后续生成中开发的)
到目前为止,对这方面的调查看起来并不乐观,但我不想在这里不提问就放弃这方面的研究
# 1 楼答案
由于EMF的代码生成器不直接支持varargs,因此有人要求将上限作为varargs的标记。 错误报告待定,即请求的功能不可用: https://bugs.eclipse.org/bugs/show_bug.cgi?id=337052
# 2 楼答案
如果您想要的是模型类上的var argJava方法,并且您不需要正确的EMF操作,那么这是可以解决的:
让您的模型类实现一个Java接口,其中声明了vararg方法
Java文件:
Xcore文件:
将生成不带var arg方法的
ModelObjectImpl
实现。您必须编辑生成的代码,并为要编译的代码添加var arg方法:也许可以找到这个解决方案的一些变体,而不必编辑生成的代码。例如,在接口中添加该方法的默认实现,然后在手工编写的子类中将该方法重写到电子类中