Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以在Eclipse/EMF中将操作参数建模为vararg?_Java_Eclipse_Emf_Eclipse Emf - Fatal编程技术网

Java 是否可以在Eclipse/EMF中将操作参数建模为vararg?

Java 是否可以在Eclipse/EMF中将操作参数建模为vararg?,java,eclipse,emf,eclipse-emf,Java,Eclipse,Emf,Eclipse Emf,我试图找到一种方法,用vararg输入参数对操作建模 模型应该生成一个界面,如下所示 /** * ... * @generated */ public interface Content extends EObject { /** * ... * @generated */ List<Definition> getDefinitionsByLabels(String... label); } /** * ... *

我试图找到一种方法,用vararg输入参数对操作建模

模型应该生成一个界面,如下所示

/**
 * ...
 * @generated
 */
public interface Content extends EObject {
    /**
     * ...
     * @generated
     */
    List<Definition> getDefinitionsByLabels(String... label);      


}
/**
* ...
*@生成
*/
公共接口内容扩展了EObject{
/**
* ...
*@生成
*/
列出GetDefinitionsByLabel(字符串…标签);
}
请不要使用变通方法回答,因为我正在尝试更新现有(大型)代码库的模型(该代码库是“手动”在后续生成中开发的)

到目前为止,对这方面的调查看起来并不乐观,但我不想在这里不提问就放弃这方面的研究


由于EMF的代码生成器不直接支持varargs,因此有人要求将上限作为varargs的标记。 错误报告待定,即请求的功能不可用:

如果您想要的是模型类上的var-argJava方法,并且您不需要正确的EMF操作,则可以解决以下问题:

让您的模型类实现一个Java接口,其中声明了vararg方法

Java文件:

public interface InterfaceWithVarargMethod {
    public void varArgMethod(String... arg);
}
Xcore文件:

@GenModel(modelDirectory="/EMF_Trying/src-gen")
package emf_trying

interface InterfaceWithVarargMethod wraps InterfaceWithVarargMethod {}

class ModelObject extends InterfaceWithVarargMethod {
}
将生成不带var arg方法的
ModelObjectImpl
实现。您必须编辑生成的代码,并为要编译的代码添加var arg方法:

public class ModelObjectImpl extends MinimalEObjectImpl.Container implements ModelObject {
    /**
     * @generated NOT
     */
    @Override
    public void m(String... arg) {
        // Implementation of var-arg method
    }

    ...
}
也许可以找到这个解决方案的一些变体,而不必编辑生成的代码。例如,在接口中添加该方法的默认实现,然后在手工编写的子类中将该方法重写到EClass