黑马程序员-java注解

注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应的事。标记可以加载包、类、字段、方法、方法的参数及局部变量上。 


注解的三个阶段:java源文件-->Class文件-->内存中的字节码
默认值是在(defaults to RetentionPolicy.CLASS)Class阶段
@Override注解范围是在源文件、@SuppressWarnings注解的范围是在源代码、Retention注解范围在内存。

例子:
1、先定义自己的Annotation
[java]  view plain copy
  1.  @Retention(RetentionPolicy.RUNTIME)  
  2.  @Target({ElementType.METHOD,ElementType.TYPE})  
  3.  public @interface MyAnnotation {  
  4.          //String color();//默认就是public的抽象方法  
  5.          String color() default "red";  
  6.          int[] array() default {1,2,3};  
  7.          String value();  
  8.          EnumTest.TrafficLamp lamp() default EnumTest.TrafficLamp.RED;  
  9.          MetaAnnotation annotation() default @MetaAnnotation("anntation");  
  10.          Class get() default String.class;  
  11. }  



2、在类中用自己的Annotation
[java]  view plain copy
  1. @MyAnnotation(value="123",array={3,4,5},annotation=@MetaAnnotation("yanshao"),get=Integer.class)  
  2. public class AnnotationTest {  
  3.   
  4.        public static void main(String[] args) throws Exception{  
  5.           if(AnnotationTest.class .isAnnotationPresent(MyAnnotation.class)){  
  6.                    //MyAnnotation annotation = (MyAnnotation)MyAnnotation.class.newInstance();  
  7.                      MyAnnotation annotation2 = (MyAnnotation)AnnotationTest.class  
  8.                                                  .getAnnotation(MyAnnotation.class);  
  9.                   //打印自定义的注释的一些属性。  
  10.                     System.out.println(annotation2.color());  
  11.                     System.out.println(annotation2.value());  
  12.                     System.out.println(annotation2.array().length);  
  13.                     System.out.println(annotation2.lamp());  
  14.                     System.out.println(annotation2.annotation().value());  
  15.                     System.out.println(annotation2.get());  
  16.           }  
  17.       }  
  18. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值