-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
第一讲. 概述
- 注解是JDK1.5引入的新特性之一,是很重要的概念
- 注解的写法 @interface,里面可以声明一些属性,可以为其设置default值
@interface MyAnnotation{
String color() default "blue";
String value();
}
- 注解的用法 :通过反射操作可以获取注解中的属性
第二讲.java的三种注解——SupressWarnings、Deprecated、Override
- SuppressWarnings
- Deprecated
- Override
class AnnotationDemo
{
@SuppressWarnings("deprecation")//抑制过时warnings
public static void main(String[] args)
{ MyAnnotation an=null;
if(AnnotationDemo.class.isAnnotationPresent(MyAnnotation.class))
an=(MyAnnotation)AnnotationDemo.class.getAnnotation(MyAnnotation.class);
System.out.println(an.color());
}
@Deprecated//在别的类引用时,编译时会有过时warnings
public static void sayHi(){
System.out.println("Hi,Boy");
}
@Override//覆写声明,否则编译报错
public boolean equals(Object obj){return this==obj;}
}
第三讲. 元注解
- @Retention
@Retention(RetentionPolicy.RUNTIME)//注解的生命周期
//RetentionPolicy.SOURCE:java源文件,编译器看的。如Override,Suppresswarning,
//RetentionPolicy.CLASS(默认): .class文件
//RetentionPolicy.RUNTIME:内存中。如Deprecated,因为它需要通过反射查看注解信息
- @Target
@Target({ElementType.METHOD,ElementType.TYPE})//
//METHOD代表函数,其他还有
//ANNOTATION_TYPE:注释类型声明
//CONSTRUCTOR 构造方法声明
//FIELD 字段声明(包括枚举常量)
//LOCAL_VARIABLE 局部变量声明
//PACKAGE 包声明
//PARAMETER 参数声明
//TYPE代表:类、接口(包括注释类型)或枚举声明
//顺便说一下type接口,它代表java类型,包括类、接口、注解、枚举这些
例子
import java.lang.annotation.*;
@MyAnnotation("abc")//只有value属性需要赋值时,可以只写值
//MyAnnotation(value="abc")
class AnnotationDemo
{
@SuppressWarnings("deprecation")//抑制过时warnings
public static void main(String[] args)
{ MyAnnotation an=null;
if(AnnotationDemo.class.isAnnotationPresent(MyAnnotation.class))
an=(MyAnnotation)AnnotationDemo.class.getAnnotation(MyAnnotation.class);
System.out.println(an.color());
}
}
//元注解,注解的注解
@Retention(RetentionPolicy.RUNTIME)//注解的生命周期
@Target({ElementType.METHOD,ElementType.TYPE})
@interface MyAnnotation{
String color() default "blue";
String value();
}