元注解

共有4种

@Retention                   表示需要在什么级别保存该注释信息(生命周期)
  |--- RetentionPolicy.SOURCE: 停留在java源文件,编译器被丢掉
  |--- RetentionPolicy.CLASS: 停留在class文件中,但会被VM丢弃(默认)
  |--- RetentionPolicy.RUNTIME: 内存中的字节码,VM将在运行时也保留注解,因此可以通过反射机制读取注解的信息 @Target             默认值为任何元素,表示该注解用于什么地方
  |--- ElementType.CONSTRUCTOR:   构造器声明
  |--- ElementType.FIELD:       成员变量、对象、属性(包括enum实例)
  |--- ElementType.LOCAL_VARIABLE: 局部变量声明
  |--- ElementType.METHOD;      方法声明
  |--- ElementType.PACKAGE:     包声明
  |--- ElementType.PARAMETER:    参数声明
  |--- ElementType.TYPE:       类、接口(包括注解类型)或enum声明 @Documented    将注解包含在JavaDoc中,Documented是一个标记注解,没有成员 @Inheried    允许子类继承父类中的注解,@Inherited阐述了某个被标注的类型是被继承的。如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类
 package learn.JavaBasics.Class;

 import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.reflect.Method; @Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE,ElementType.METHOD})
@Documented
@Inherited
@interface myAnnotationDemo{
public String value() default "heollo annotation";
} @myAnnotationDemo(value="test class success")
public class TestAnnotation {
public static void main(String[] args) throws SecurityException, NoSuchMethodException {
Class<?> clazz = TestAnnotation.class; if (clazz.isAnnotationPresent(myAnnotationDemo.class)) {
//获取类的注解
myAnnotationDemo mya = clazz.getAnnotation(myAnnotationDemo.class); System.out.println(mya.value()); //获取方法的注解
Method m = clazz.getMethod("testAnnotation");
myAnnotationDemo ma = m.getAnnotation(myAnnotationDemo.class); System.out.println(ma.value());
}
} @myAnnotationDemo(value="test method success")
public void testAnnotation(){ }
}

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. setAlpha方法 设置透明度

    public void setAlpha (int x) 其中,参数x为透明度,取值范围为0~255,数值越小越透明.

  2. C++ 一个统计文件夹下所有代码文件行数的小工具

    // CodeLines.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <Commdlg.h> #inclu ...

  3. php闭包实现函数的自调用,也是递归

    php的闭包可能不常用,但是在某些场合之下还是可以考虑用php的闭包来实现某些功能的,比如递归,这里讲一下用php的闭包实现递归 //php闭包实现函数的自调用,也就是实现递归 function cl ...

  4. asp.net页面间传值方式

    使用asp.net开发项目,必然会在页面间进行传值,本文介绍几种常见的页面传值方式,仅作笔记,以便后续查找使用. 前提:新建两个页面:ValuePage.aspx,ObtainValue.aspx,本 ...

  5. RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本发布

    (新年巨献) RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本发布 历时数月,RDIFramework.NET V2.8版本发布了,感谢大家的支持. RDIFram ...

  6. mysqladmin note

    hr,fresh meat!! --------------------------------------------------- 15 Practical Usages of Mysqladmi ...

  7. Markdown 语法和 MWeb 写作使用说明

    ---恢复内容开始--- # Markdown 语法和 MWeb 写作使用说明 Markdown 的设计哲学 Markdown 的目標是實現「易讀易寫」. 不過最需要強調的便是它的可讀性.一份使用 M ...

  8. meta标签详解(meta标签的作用)///////////////////////////转

    meta标签详解(meta标签的作用) 很多人却忽视了HTML标签META的强大功效,一个好的META标签设计可以大大提高你的个人网站被搜索到的可能性,有兴趣吗,谁我来重新认识一下META标签吧   ...

  9. GDB调试多线程

    先介绍一下GDB多线程调试的基本命令. info threads 显示当前可调试的所有线程,每个线程会有一个GDB为其分配的ID,后面操作线程的时候会用到这个ID. 前面有*的是当前调试的线程. th ...

  10. .NET开发实战1-军队未出,粮草先行。

    马上期末考试了,会想起这个学习的自己.一直都在一个人搞java的研究,C#课也没怎么去上.所以在这里想弥补一下自己没去上课的原因,也希望老师能够理解这个还在迷茫的我. 正所谓,军队未出粮草先行,所以我 ...