黑马程序员-----注解

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------


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



注解就相当于一个你的源程序中要调用的一个类,要在源程序中应用某个注解,得先准备好了这个注解类,就好像你要调用某个类必须先开发好这个类;
二、1、@SuppressWarnings("deprecation"):压缩警告 
@Deprecated标记某个方法过时 
@Override子类覆盖父类的方法


2、@Retention元注解,三种取值:RetetionPolicy.SOURCE、RetetionPolicy.CLASS、RetetionPolicy.RUNTIOME分别对应:
java源文件-->class文件-->内存中的字节码;默认值在class阶段;


3、@Target元注解,Target的默认值为任何元素,设置Target等于ElementType.METHOD,,原来 加在类上的注解就报错了,改为数组方式设置(ElementType.METHOD,ElementType,TYPE)就可以了


4、为注解增加高级属性
1)、数组类型的属性
int[] arrayAttr() default{1,2,3};
@MyAnnotation(arrayAttr={2,3,4});
如果数组属性中只有一个元素,这时候属性值部分可以省略大括号
2)、枚举类型的属性
EnumTest.TrafficLamp.lamp();
@MyAnnotation(lamp=EnumTest.TrafficLamp.GREEN);
3)、注解类型的属性
MetaAnnotation annotationAttr() default @MetaAnnotation("***");
@MyAnnotation(annotationAttr=@MetaAnnotation("***"))




package A;
public @interface MetaAnnotation {
String value();
}
package A;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface ItcastAnnotation {
String color() default "blue";
String value();
int[] arrayAttr() default{3,4,5};
MetaAnnotation annotationAttr() default @MetaAnnotation("lhm");
}
package A;
@ItcastAnnotation(annotationAttr=@MetaAnnotation("flx"),color="red",value="abc",arrayAttr=4)
public class AnnotationTest {

public static void main(String[] args){
if(AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)){
ItcastAnnotation annotation = AnnotationTest.class.getAnnotation(ItcastAnnotation.class);
System.out.println(annotation);
System.out.println(annotation.color());
System.out.println(annotation.value());
System.out.println(annotation.arrayAttr().length);
System.out.println(annotation.annotationAttr().value());
}
}
}

注意:枚举和注解都是特殊的类,不能用new创建它们的实例对象,创建枚举的实例对象就是在其中增加元素。


---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------


详细请查看:<a href="http://edu.csdn.net" target="blank">http://edu.csdn.net</a>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值