- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
自定义标注型态
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 自定义标注型态 标注属性也可以用数组形式指定 自定义标注型态 在定义标注属性时,如果属性名稱为value,则可以省略属性名称,直接指定值 这个标注可以使用@Ignore(value = message)指定,也可以使用@Ignore(message)指定 自定义标注型态 以下这个标注: 可以使用@TestClass(value = {Some.class, Other.class})指定,也可以使用@TestClass({Some.class, Other.class})指定 自定义标注型态 使用default关键词可以对成员设定默认值 自定义标注型态 如果是Class设定的属性比较特别,必须自定义一个类别作为默认值 自定义标注型态 如果要设定数组默认值的话,可以在default之后加上{} 自定义标注型态 可使用java.lang.annotation.Target限定标注使用位置,限定时可指定java.lang.annotation.ElementType的列举值 自定义标注型态 想将@Test8限定只能用于方法: 自定义标注型态 想要将标注资料加入文件,可以使用java.lang.annotation.Documented 自定义标注型态 在定义标注时设定java.lang.annotation.Inherited标注,就可以让标注被子类别继承 JDK8标注增强 在JDK8出现之前,ElementType的列举成员,是用来限定哪个宣告位置可以进行标注 JDK8的ElementType多了两个列举成员TYPE_PARAMETER、TYPE_USE,它们是用来限定哪个型态可以进行标注 JDK8标注增强 在定义@Email时,必须在@Target设定ElementType.TYPE_PARAMETER,表示这个标注可用来标注型态参数 JDK8标注增强 一个标注如果被设定为ElementType.TYPE_USE,只要是型态名称,都可以进行标注 JDK8标注增强 以下几个标注范例都是可以的: 以下的标注就不合法: JDK8标注增强 这可以让你如下进行标注: JDK8标注增强 JDK8新增了个@Repeatable 执行时期读取标注信息 如果希望于执行时期读取标注信息,可以于自定义标注时使用java.lang.annotation.Retention搭配java.lang.annotation.RetentionPolicy列举指定… 执行时期读取标注信息 可使用java.lang.reflect.AnnotatedElement接口实作对象取得标注信息 执行时期读取标注信息 Class、Constructor、Field、Method、Package等类别,都实作了AnnotatedElement界面 如果标注在定义时的RetentionPolicy指定为RUNTIME,就可以用Class、Constructor、Field、Method、Package等类别的实例,取得设定的标注信息 执行时期读取标注信息 执行时期读取标注信息 JDK8新增了getDeclaredAnnotation()、getDeclaredAnnotationsByType()、getAnnotationsByType() * * * * * * * * * * 了解java.lang.Enum类别 Enum的valueOf()方法,可以传入字符串与Enum实例,它会传回对应的列举实例 通常会透过Enum子类别的valueOf()方法,其内部就使用了Enum.valueOf()(可观察先前反编译Action列举的程序代码) 了解java.lang.Enum类别 Enum的equals()与hashCode()基本上继承了Object的行为,但被标示为final: 进阶enum运用 values()方法会将内部维护Action列举实例的数组复制后传回 由于是复制品,因此改变传回的数组,并不会影响Action内部所维护的数组 进阶enum运用 可以自行定义建构式,条件是不得为公开(public)建构式,也不可以于建构式中呼叫super() 进阶enum运用 例如原本有个interface定义的列举常数: 进阶enum运用 进阶enum运用 定义列举时还可以实作接口,例如有个接口定义如下: 进阶enum运用 进阶enum运用 可以如下执
文档评论(0)