Groovy中那些神奇註解之InheritConstructors

上一篇:Groovy中那些神奇註解之ToStringhtml

寫完ToString,原本想今天就寫到這了,忽然以爲InheritConstructors註解實在也是個神器,寫起來也沒多少字,仍是寫了吧。java

InheritConstructors,從名字看就知道是繼承構造函數(這話貌似我每篇都說,不得不說人家名字取得好),不知道你們有沒有這樣的經歷,繼承JAVA的Exception的時候,爲了能和Exception本來的構造函數對應起來,會寫上不少個構造函數,而函數的實現,每每就是super(...),若是你有過這樣的經歷,那這個註解就是你的救星了,他作的事情,就是把父類裏面的構造函數,都繼承下來,顯示實現:)函數

上代碼:spa

import groovy.transform.*

@InheritConstructors
class MyException extends RuntimeException{

}

  

足夠簡單了吧,看看轉換後的代碼:code

import groovy.transform.*

@groovy.transform.InheritConstructors
public class MyException implements groovy.lang.GroovyObject extends java.lang.RuntimeException { 

    private static org.codehaus.groovy.reflection.ClassInfo $staticClassInfo 
    public static transient boolean __$stMC 
    private transient groovy.lang.MetaClass metaClass 

    protected MyException(java.lang.String param0, java.lang.Throwable param1, boolean param2, boolean param3) {
        super(param0, param1, param2, param3)
        metaClass = /*BytecodeExpression*/
    }

    public MyException(java.lang.Throwable param0) {
        super(param0)
        metaClass = /*BytecodeExpression*/
    }

    public MyException(java.lang.String param0, java.lang.Throwable param1) {
        super(param0, param1)
        metaClass = /*BytecodeExpression*/
    }

    public MyException(java.lang.String param0) {
        super(param0)
        metaClass = /*BytecodeExpression*/
    }

    public MyException() {
        super()
        metaClass = /*BytecodeExpression*/
    }

    protected groovy.lang.MetaClass $getStaticMetaClass() {
    }

    public groovy.lang.MetaClass getMetaClass() {
    }

    public void setMetaClass(groovy.lang.MetaClass mc) {
    }

    public java.lang.Object invokeMethod(java.lang.String method, java.lang.Object arguments) {
    }

    public java.lang.Object getProperty(java.lang.String property) {
    }

    public void setProperty(java.lang.String property, java.lang.Object value) {
    }

}

  

熱淚盈眶了,有木有?orm

 

InheritConstructors的選項比較簡單,就兩個,constructorAnnotations和parameterAnnotations,默認值都是false,功能麼,呃,從名稱就知道了,一個是是否繼承父類構造函數上的註解,一個是是否繼承父類構造函數中參數的註解。htm

 

好了,沒了,真休息了。blog

相關文章
相關標籤/搜索