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

相关文章
相关标签/搜索