元注解

  1. 共有4
  2.  
  3. @Retention 表示需要在什么级别保存该注释信息(生命周期)
      |--- RetentionPolicy.SOURCE: 停留在java源文件,编译器被丢掉
      |--- RetentionPolicy.CLASS: 停留在class文件中,但会被VM丢弃(默认)
      |--- RetentionPolicy.RUNTIME: 内存中的字节码,VM将在运行时也保留注解,因此可以通过反射机制读取注解的信息
  4.  
  5. @Target             默认值为任何元素,表示该注解用于什么地方
      |--- ElementType.CONSTRUCTOR:   构造器声明
      |--- ElementType.FIELD:       成员变量、对象、属性(包括enum实例)
      |--- ElementType.LOCAL_VARIABLE: 局部变量声明
      |--- ElementType.METHOD;      方法声明
      |--- ElementType.PACKAGE:     包声明
      |--- ElementType.PARAMETER:    参数声明
      |--- ElementType.TYPE:       类、接口(包括注解类型)或enum声明
  6.  
  7. @Documented    将注解包含在JavaDoc中,Documented是一个标记注解,没有成员
  8.  
  9. @Inheried    允许子类继承父类中的注解,@Inherited阐述了某个被标注的类型是被继承的。如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类
  1. package learn.JavaBasics.Class;
  2.  
  3. import java.lang.annotation.Documented;
  4. import java.lang.annotation.ElementType;
  5. import java.lang.annotation.Inherited;
  6. import java.lang.annotation.Retention;
  7. import java.lang.annotation.RetentionPolicy;
  8. import java.lang.annotation.Target;
  9. import java.lang.reflect.Method;
  10.  
  11. @Retention(RetentionPolicy.RUNTIME)
  12. @Target({ElementType.TYPE,ElementType.METHOD})
  13. @Documented
  14. @Inherited
  15. @interface myAnnotationDemo{
  16. public String value() default "heollo annotation";
  17. }
  18.  
  19. @myAnnotationDemo(value="test class success")
  20. public class TestAnnotation {
  21. public static void main(String[] args) throws SecurityException, NoSuchMethodException {
  22. Class<?> clazz = TestAnnotation.class;
  23.  
  24. if (clazz.isAnnotationPresent(myAnnotationDemo.class)) {
  25. //获取类的注解
  26. myAnnotationDemo mya = clazz.getAnnotation(myAnnotationDemo.class);
  27.  
  28. System.out.println(mya.value());
  29.  
  30. //获取方法的注解
  31. Method m = clazz.getMethod("testAnnotation");
  32. myAnnotationDemo ma = m.getAnnotation(myAnnotationDemo.class);
  33.  
  34. System.out.println(ma.value());
  35. }
  36. }
  37.  
  38. @myAnnotationDemo(value="test method success")
  39. public void testAnnotation(){
  40.  
  41. }
  42. }

java高薪之路__008_Annotation的更多相关文章

  1. java高薪之路__009_网络

    1. InetAddress类2. Socket: IP地址和端口号的结合,socket允许程序把网络连接当成一个流,数据在两个socket间通过IO传输, 通信的两端都要有socket. 主动发起通 ...

  2. java高薪之路__007_反射

    参考地址: 1. http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html2. http://www.cnblogs.com/ ...

  3. java高薪之路__005_IO流

    参考地址: 1. http://blog.csdn.net/yczz/article/details/38761237 File类 ObjectInputStream && Objec ...

  4. java高薪之路__003_集合

    Java集合可分为Collection和Map两大体系 Collection接口 |---- Set: 元素无序.不可重复 |---- List: 元素有序.可重复 (动态数组) |---- Queu ...

  5. java高薪之路__002_异常处理

    自定义异常 package learn.JavaBasics.Class; import java.util.Date; /** * 如何自定义一个异常类 * 1. 继承一个现有的异常类 * 2. 提 ...

  6. java高薪之路__001_类

    Java中内部类分四种:成员内部类.局部内部类.静态内部类和匿名内部类.要注意静态内部类的调用方式与其他不同,采用的是类似调用类中的静态属性.静态方法的方式 Multi Level 调用不同类中的相同 ...

  7. java高薪之路__010_设计模式

    设计模式只是一个在构建大型工程时,为了方便更改,添加,查询和管理的一种代码工具,没有必要单独为了设计模式而使用设计模式,使简单的事情复杂化. 总体来说设计模式分为三大类: 1. 创建型模式,共五种 - ...

  8. java高薪之路__006_多线程

    线程的创建有两种方式 package learn.JavaBasics.Class; public class ThreadDemo extends Thread { private static i ...

  9. java高薪之路__004_泛型

    参考地址: 1. http://www.cnblogs.com/lwbqqyumidi/p/3837629.html2. http://www.cnblogs.com/abcwt112/p/47350 ...

随机推荐

  1. Masonry学习分享

    不完整目录 •UIScrollView 应用Masonry的正确用法 •tableHeaderView使用Masonry •同向文字显示优先级 1.基础篇 1.1基础使用 1.1.1运行效果 1.1. ...

  2. Java初始化生命周期

    package com.init; abstract class Glyph { void draw() { System.out.println("Glyph.draw()"); ...

  3. MyArrayAdapter 比较标准的写法

    ; i < mString.size(); i++) { insert(mString.get(i), i); } } notifyDataSetChanged(); LogUtils.LOGD ...

  4. UML聚合与组合

    http://www.cnblogs.com/shanwenbin/archive/2012/10/24/2737229.html UML聚合与组合 2012-10-24 15:35 by DayDa ...

  5. 解决pip国外安装源慢的问题

    用默认的pip安装源pypi.python.org由于在国外经常会出现超时的问题,而且安装速度极其的慢,如下图中的超时问题=>

  6. 欢快的使用Unity JSON吧

    0x01:前言 Unity 5.3加入了UnityUtility类,意味着Unity终于有了自己原生态的JSON库.Unity主要用来游戏开发,JSON做为游戏开发中最受欢迎的配置文件.在官方没有库支 ...

  7. canvas 实现 柱状图

    define([],function(){ var myChart={ init:function(options){ this.ctx = options.ctx; this.data = opti ...

  8. js 十分精确身份证验证

    checkIdcard:function (idcard) { // 1 "验证通过!", 0 //身份证号码校验错误 var Errors = new Array( " ...

  9. .NET中string[]数组和List<string>泛型的相互转换以及Array类的Sort()方法(转)

    从string[]转List<string>: " }; List<string> list = new List<string>(str); 从List ...

  10. Struts2(二):工作原理

    struts可查看源码:https://github.com/apache/struts 在学习struts2之前,我先看了一些比较早版本对struts2的工作原理相关的介绍,顺便抄写过来,用来帮助自 ...