Groovy中那些神奇注解之InheritConstructors
2016-02-04 16:21
281 查看
上一篇:Groovy中那些神奇注解之ToString
写完ToString,本来想今天就写到这了,突然觉得InheritConstructors注解实在也是个神器,写起来也没多少字,还是写了吧。
InheritConstructors,从名字看就知道是继承构造函数(这话貌似我每篇都说,不得不说人家名字取得好),不知道大家有没有这样的经历,继承JAVA的Exception的时候,为了能和Exception原本的构造函数对应起来,会写上很多个构造函数,而函数的实现,往往就是super(...),如果你有过这样的经历,那这个注解就是你的救星了,他做的事情,就是把父类里面的构造函数,都继承下来,显示实现:)
上代码:
足够简单了吧,看看转换后的代码:
热泪盈眶了,有木有?
InheritConstructors的选项比较简单,就两个,constructorAnnotations和parameterAnnotations,默认值都是false,功能么,呃,从名称就知道了,一个是是否继承父类构造函数上的注解,一个是是否继承父类构造函数中参数上的注解。
好了,没了,真休息了。
写完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,功能么,呃,从名称就知道了,一个是是否继承父类构造函数上的注解,一个是是否继承父类构造函数中参数上的注解。
好了,没了,真休息了。
相关文章推荐
- bzoj 1002
- TCP客户端
- jenkins 构建触发器 区别
- CSS属性之box-reflect(倒影)
- [bzoj 2725] 故乡的梦
- HDU4786(生成树)
- mybaits错误解决:There is no getter for property named 'id' in class 'java.lang.Long'
- 2015百度招聘
- IOS 颜色值#ffffff转UIColor
- Python中的字符串类型基本知识学习教程
- 使用Hadoop分析数据——简单案例java语言编程之MaxTemperature
- I/O流
- 【python 笔记】字符串translate用法
- ___89___GraphicsPath_GDI矩阵变幻Transform
- 对象归档
- 【精】配色达人速成
- 关于iOS中图片的平铺
- 例题6-6 UVs679 Dropping Balls(二叉树)
- Leetcode Path Sum
- %s的用法