如何使用JvmTypesBuilder生成非抽象的非默认接口方法

时间:2015-10-20 14:00:25

标签: xtext xtend

我想生成一个非默认方法的接口。为此,我使用了JvmTypesBuilder。

代码

meth.toMethod(meth.name, meth.returnType)[]

生成例如

public default int meth();

尝试

meth.toMethod(meth.name, meth.returnType)[
   it.^default = false
]

不会改变任何事情。

将其设置为抽象作品

meth.toMethod(meth.name, meth.returnType)[
  it.abstract = true
]

然后我得到一个类似

的方法
public abstract int meth();

我不想要的。

有没有办法使用JvmTypesBuilder并生成没有默认或抽象关键字的方法?

public int meth();

我正在使用Eclipse 4.5.1 for DSL Developer

2 个答案:

答案 0 :(得分:0)

请确保将方法放入界面而不是课程中。例如。请将JvmGenericType上的界面标记设置为true。这应该可以解决问题。

答案 1 :(得分:0)

您期望生成什么?方法可以具有实现(default)或不具有(abstract)。实际上,没有任何修饰符,接口方法是隐式的abstract

interface MyInterface
{
    public abstract void foo();
}

编译为与

完全相同的字节码
interface MyInterface
{
    public void foo();
}