2015-10-20 57 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