Java注解阐述
来源:互联网 发布:欧迪臣bit one软件 编辑:程序博客网 时间:2024/05/17 09:29
首先我们来看一下注解的声明:
import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Target(ElementType.METHOD) //表示注解用于方法声明/** * 表示需要在什么级别保存该注解信息,RUNTIME:VM将在运行期间保留注解,因此可以通过反射机制读取注解的信息。 */@Retention(RetentionPolicy.RUNTIME)/* * 注解的声明和接口很相似,只是在前面加一个@ */ public @interface Usecase { public String id(); public int age(); public String addr() default "shanghai";//注解可以设置默认值}
接下来创建一个实体类用于使用注解
public class PersonPro { /** * 一旦在Annotation里定义了成员变量之后,之后使用Annotation就要为该Annotation的成员变量指定值 */ @Usecase(age=23,id="1") public void getInfo(){ System.out.println("测试注解"); } @Usecase(age=33,id="2") public void getAddr(){ System.out.println("测试注解01"); }}
最后进入代码测试区
import java.lang.reflect.Method;public class TestMain { /** * @param args */ public static void main(String[] args) { PersonPro person = new PersonPro(); Class<?> c1 = person.getClass(); //通过反射提取注解信息 for (Method m : c1.getDeclaredMethods()) { Usecase uc = m.getAnnotation(Usecase.class); //创建注解的实例 System.out.println("age ="+uc.age()+" addr="+uc.addr()+" id="+uc.id()); } }}
注解的本质:
1.注解实质上会被编译器编译为接口,并且继承java.lang.annotation.Annotation接口。
2.注解的成员变量会被编译器编译为同名的抽象方法。
3.根据Java的class文件规范,class文件中会在程序元素的属性位置记录注解信息。例如,RuntimeVisibleAnnotations属性位置,记录修饰该类的注解有哪些;flags属性位置,记录该类是不是注解;在方法的AnnotationDefault属性位置,记录注解的成员变量默认值是多少。
0 0
- Java注解阐述
- Java权限关键字阐述
- JAVA并发:happens-before阐述
- 简单阐述java访问控制
- Java线程同步机制深刻阐述
- java单例模式小阐述
- 【总结】Java线程同步机制深刻阐述
- Java线程同步机制深入阐述
- Java中关于getInstance方法的阐述
- Java多线程之volatile作用阐述
- 从JVM角度阐述Java数据类型
- Java注解-自定义注解
- Java注解----自定义注解
- Java注解自定义注解
- Java注解--四种元注解
- Java注解-三种內建注解
- 【Java】【注解】自定义注解
- 一位惠普java研发工程师阐述java培训的感言
- K-means算法
- 多线程
- 安装maven
- 【白乔原创】写二十年的代码是一种什么样的体验?
- Java设计模式之迭代器模式和组合模式
- Java注解阐述
- butterknife+dagger+otto+okhttp+picasso+retrofit+rxjava示例项目
- 判断一个字符串是不是回文(C#解法)
- 将字符串反转
- Qtcreator中常用快捷键和小技巧
- 模仿蘑菇街的开场动画
- 计算文件字节数的方法
- JDBC操作mysql
- php下载文件错误,文件损坏,编码错误,有空格