Java 注解编程
2011-07-02 11:15
225 查看
注解
注解相当于是一种标记,加了注解就等于打上了某种标记。注解可以加在包、类、字段、方法、方法的参数、局部变量上。开发工具和其它程序可以用反射来了解你的类及各种元素上有无何种标记,有什么标记就去干相应的事。(1)Java 中的注解
@SuppressWarning 忽略警告
public class AnotationTest { @SuppressWarnings("deprecation") public static void main(String[] args) { System.runFinalizersOnExit(true); } }
@Deprecated 表示某个元素已经过时
public class AnotationTest { @SuppressWarnings("deprecation") public static void main(String[] args) { System.runFinalizersOnExit(true); sayHello(); } @Deprecated public static void sayHello(){ System.out.println("DriverKing_斌"); } }
@override 重写父类中的一个方法
public class AnotationTest { @SuppressWarnings("deprecation") public static void main(String[] args) { System.runFinalizersOnExit(true); sayHello(); } @Deprecated public static void sayHello(){ System.out.println("DriverKing_斌"); } @Override public boolean equals(Object obj) { // TODO Auto-generated method stub return super.equals(obj); } @Override public int hashCode() { // TODO Auto-generated method stub return super.hashCode(); } }
(2)注解的自定义与反射调用
注解的应用结构图:
编写自定义注解:
@Retention(RetentionPolicy.RUNTIME) //元注解,这个参数表示该注解的生命周期保持到运行时 public @interface MyAnotation { }
应用注解:
@MyAnotation //添加了自定义注解 public class AnotationTest { public static void main(String[] args) { if(AnotationTest.class.isAnnotationPresent(MyAnotation.class)){ //判断是否为注解类型 MyAnotation anotation = AnotationTest.class.getAnnotation(MyAnotation.class); System.out.println(anotation); } } }
注解的生命周期:注解的生命周期有三个种: java源文件 -----> class文件 ----->内存中字节码
元注解:
@Retention ,表示该注解的生命周期。默认值为在 class 文件阶段。
@Target,表示该注解能被应用的范围。
@Retention(RetentionPolicy.RUNTIME) //元注解,这个属性表示该注解的生命周期保持到运行时 @Target({ElementType.METHOD,ElementType.TYPE}) //元注解,这个属性表示该注解应用在方法或各种类型身上,如果有多个属性,则用数组表示 public @interface MyAnotation { }
为注解添加属性:
@MyAnotation(Color="red",value="abc",array={1,2,3},annotation=@MetaAnnotation("调用注解的注解")) //如果有属性且没有默认值,则必须指定属性值 public class AnotationTest { public static void main(String[] args) { if(AnotationTest.class.isAnnotationPresent(MyAnotation.class)){ MyAnotation anotation = AnotationTest.class.getAnnotation(MyAnotation.class); System.out.println(anotation.Color()); } } }
@Retention(RetentionPolicy.RUNTIME) //元注解,这个参数表示该注解的生命周期保持到运行时 @Target({ElementType.METHOD,ElementType.TYPE}) //元注解,这个参数表示该注解应用在方法或各种类型身上,如果有多个参数,则用数组表示 public @interface MyAnotation { String Color(); //定义了一个属性,表示这个注解有一个颜色属性 String value(); //特殊的属性,如果只有一个 vlaue 属性,则在调用注解的时候可以直接写属性值,例如 @Retention("abc") String name() default "DriverKing_斌"; //指定默认值 int[] array() default {2,1}; MetaAnnotation annotation() default @MetaAnnotation("注解的注解"); }
public @interface MetaAnnotation { String value(); }
相关文章推荐
- java 注解的基本原理和编程实现
- 【JavaWeb-14】代理Proxy、动态代理、AOP编程思想、注解、元注解、类加载器
- Java注解编程指南
- Java注解编程指南
- java 注解 基本原理 编程实现
- Java乔晓松-基于注解的面向AOP(切面)编程
- java注解编程
- Java核心编程十三:注解
- Java编程思想-基于注解的单元测试
- 怎样理解 java 注解和运用注解编程?
- 注解 Java编程思想 读书简记
- 利用Spring的AOP编程和JAVA自定义注解,实现Web项目的HTTP请求头域检测
- java编程思想学习_第20章_注解
- java编程思想-注解思维导图
- Java编程思想-注解
- Java 编程思想--注解
- Java编程之反射中的注解详解
- java编程思想-注解
- Java编程之反射中的注解详解