2015-10-20 66 views
2

我想用非默认方法生成接口。为此我使用JvmTypesBuilder。如何使用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 DSL开发

回答

0

请确保你把方法为一个接口,而不是为一类。例如。请将JvmGenericType上的接口标志设置为true。这应该够了吧。

+0

我使用toInterface方法相同的字节码。所以生成的代码是一个接口。 – Mino

0

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

interface MyInterface 
{ 
    public abstract void foo(); 
} 

编译成完全一样

interface MyInterface 
{ 
    public void foo(); 
} 
+0

我知道,但你的第二个代码更短,更好阅读。这只是一个可读性和外观的问题。我期待JvmTypesBuilder的另一个行为。 – Mino

+0

在这种情况下,这只是一个漂亮的打印问题。 – Clashsoft