黑马程序员技术交流社区
标题:
注解小结
[打印本页]
作者:
qixing0918
时间:
2013-11-6 18:40
标题:
注解小结
1.先了解3个基本的注解
---
@Override
方法上面 判断是否重
写
---@Deprecated 方法上面 表示方法废弃不建议被使用
---@SuppressWarnings("deprecation") 压制警告(废弃的警告)
2.学会自己写注解
---注解跟类接口同级 书写方式public @interface ItcastAnnotation
---在注解上定义注解
// 元注解 元数据 元信息 retention表示3中类型 class source runtime// target 表示注解的作用范围 比如 method 方法上面 type 类接口 注解枚举上面@Target({ ElementType.METHOD, ElementType.TYPE })@Retention(RetentionPolicy.RUNTIME)
这两个注解定义元素都是 枚举类型
public @interface Target { ElementType[] value(); } public @interface Retention { RetentionPolicy value(); }
一个注解实例
// 元注解 元数据 元信息 retention表示3中类型 class source runtime
// target 表示注解的作用范围 比如 method 方法上面 type 类接口 注解枚举上面
@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface ItcastAnnotation {
String color() default "blue";
// 特殊属性比如 @SuppressWarnings("deprecation") 就是等于value=“deprecation”
// 但只有String value(); 时才能用 如果还有 String color() 但还想用就要设定默认值default "blue";
// 支持 @ItcastAnnotation("qixing")与
// @ItcastAnnotation(color="red",value="qixing")
String value();
// 定义数组属性
int[] arrayAttr() default { 3, 4, 5 };
// 可以是枚举
/*
* public @interface Target { ElementType[] value(); }
* public @interface Retention { RetentionPolicy value(); }
*/
//还可以是annotation
MyAnnotation annotationAttr() default @MyAnnotation("qixing");
}
复制代码
注解的使用
@ItcastAnnotation(color="red",value="qixing",annotationAttr = @MyAnnotation("yinhe"))
public class AnnotationTest {
//注解实例
//压制警告
@SuppressWarnings("deprecation")
public static void main(String[] args) {
/* System.runFinalizersOnExit(true);
System.out.println("nihao");*/
if ( AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)) {
ItcastAnnotation anno = AnnotationTest.class.getAnnotation(ItcastAnnotation.class);
System.out.println(anno);
System.out.println(new Person());
System.out.println(anno.color());
System.out.println(anno.value());
System.out.println(anno.arrayAttr().length);
System.out.println(anno.annotationAttr().value());
}
}
//作废方法
/* @Deprecated
public static void sayHello(){
System.out.println("nihao");
}*/
//还有就是@override 方法上面 判断是否重写
/* @Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
}*/
}
复制代码
注解是什么呢 比如方法上的注解
1.ItcastAnnotation anno = AnnotationTest.class.getAnnotation(ItcastAnnotation.class); 得到方法上单注解名称
2.通过反射class.forname()得到 注解对象
3.比如3大基本注解 其实就是得到名字 jvm判断对象名字是否与override相等 如果相当就去执行判断是否重写的方法
作者:
qixing0918
时间:
2013-11-7 15:00
快了 再写一篇 交通灯的博客 就申请考试了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2