• Groovy中那些神奇注解之InheritConstructors


    上一篇:Groovy中那些神奇注解之ToString

    写完ToString,本来想今天就写到这了,突然觉得InheritConstructors注解实在也是个神器,写起来也没多少字,还是写了吧。

    InheritConstructors,从名字看就知道是继承构造函数(这话貌似我每篇都说,不得不说人家名字取得好),不知道大家有没有这样的经历,继承JAVA的Exception的时候,为了能和Exception原本的构造函数对应起来,会写上很多个构造函数,而函数的实现,往往就是super(...),如果你有过这样的经历,那这个注解就是你的救星了,他做的事情,就是把父类里面的构造函数,都继承下来,显示实现:)

    上代码:

    import groovy.transform.*
    
    @InheritConstructors
    class MyException extends RuntimeException{
    
    }
    

      

    足够简单了吧,看看转换后的代码:

    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) {
        }
    
    }
    

      

    热泪盈眶了,有木有?

    InheritConstructors的选项比较简单,就两个,constructorAnnotations和parameterAnnotations,默认值都是false,功能么,呃,从名称就知道了,一个是是否继承父类构造函数上的注解,一个是是否继承父类构造函数中参数的注解。

    好了,没了,真休息了。

  • 相关阅读:
    树型表的设计 上海
    FTP通讯封装 上海
    线程淡写 上海
    TCP通讯故障 上海
    设计模式引导 上海
    初试Delegate 上海
    c# 扫描端口 上海
    攻读计算机研究生的看法(转载) 上海
    挖掘表字段中的汉字 上海
    新生活运动 上海
  • 原文地址:https://www.cnblogs.com/varlxj/p/5181852.html
Copyright © 2020-2023  润新知