有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

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


}

请不要使用变通方法回答,因为我正在尝试更新现有(大型)代码库的模型(该代码库是“手动”在后续生成中开发的)

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

Example Class Diagram


共 (2) 个答案

  1. # 2 楼答案

    如果您想要的是模型类上的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
        }
    
        ...
    }
    

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