黑马程序员-注解类

------- android培训java培训、期待与您交流! ----------

注解: 

  一个注解是一个类。

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

在注解类上加的注解叫元注解:

  @Retention(RetentionPolicy.RUNTIME)//标识注解存在于哪个阶段

  注解的存在有3个阶段,默认为class阶段:

    用@Retention元注解中的3种值来表示

    Java源文件:RetetionPolicy.SOURCE

    class文件:RetetionPolicy.CLASS

    内存中的字节码:RetetionPolicy.RUNTIME

  @Target({ElementType.METHOD,ElementType.TYPE})//表示该注解可以存在于哪些元素上。

  ElementType.TYPE表示可以存在于类上,而不是.class

 

为注解添加属性:

  在类中写: 类型 属性名(); 例如:String name();

  给属性添加默认值:类型 属性名() default 默认值

  例如:String name() default “zhangsan”;

  在注解中有一个特殊的属性名为:value

  数组类型属性:String[]  arr; 如果在给数组赋值时数组中只有一个元素就可以省略大括号。

  属性的类型可以有基本数据类型,Class、枚举、注解、还可以是前面这些数据类型的数组。

使用注解:

  @注解名(属性=);例如:@ItcastAnnotation(name=”lisi”,value=”val”)

  在属性名为value单独写的时候可以不加前面的value=,例如:@ItcastAnnotation(”val”); 只有属性名为value才有这种写法。

  在类中判断该类是否用了某个注解:该类的字节码.isAnnotationPresent(ItcastAnnotation.class);传入某个注解类的字节码文件。

  获得该注解类,该类的字节码文件.getAnnotation(ItcastAnnotation.class);传入某个注解类的字节码文件,返回一个该注解类的对象。

  调用该注解类的属性用对象.属性(),例如:注解类对象.name();

 1 package test.enhance.annotation;
 2 
 3 import java.lang.annotation.ElementType;
 4 import java.lang.annotation.Retention;
 5 import java.lang.annotation.RetentionPolicy;
 6 import java.lang.annotation.Target;
 7 
 8 import test.enhance.enumtest.WeekDay;
 9 
10 //为注解加上元注解
11 //标记为该注解可以存在到运行阶段,也就是字节码阶段。
12 @Retention(RetentionPolicy.RUNTIME)
13 //标记该注解可以用来标记class,method
14 @Target({ElementType.METHOD,ElementType.TYPE})
15 public @interface ItcastAnnotation {
16     //属性,默认值为zhangsan
17     String name() default "zhangsan";
18     int value();
19     //枚举数据类型
20     WeekDay wd() default WeekDay.MON;
21     //字节码类型。
22     Class cl() default String.class;
23 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值