---------------------- android培训、java培训、期待与您交流! ----------------------
注解:jdk1.5的新特性。它相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应的事。标记可以加在包,类,字段,方法,方法的参数以及局部变量上。
Jdk提供的注解有三个:@SuppressWarnings @Deprecated @Override
例子:
publicclass AnnotationTest {
@SuppressWarnings("deprecation")//告诉jvm忽略过时方法的注解
publicstaticvoid main(String[] asgs){
System.runFinalizersOnExit(true);
}
@Deprecated//使过时的注解
publicstaticvoid sayHello(){
System.out.println("hello");
}
@Override//覆写的注解
publicboolean equals(Object arg0) {
// TODO Auto-generatedmethod stub
returnsuper.equals(arg0);
}
}
自定义注解:
格式
像定义接口一样,只是标识符前加@即可
例:public@interfaceItcastAnnotation {//
}
=
基础知识:
认识两注释类型: Retention和target
Retention:
指示注释类型的注释要保留多久。如果注释类型声明中不存在 Retention 注释,则保留策略默认为 RetentionPolicy.CLASS。
只有元注释类型直接用于注释时,Target 元注释才有效。如果元注释类型用作另一种注释类型的成员,则无效。
Target:
指示注释类型所适用的程序元素的种类。如果注释类型声明中不存在 Target 元注释,则声明的类型可以用在任一程序元素上。如果存在这样的元注释,则编译器强制实施指定的使用限制。 例如,此元注释指示该声明类型是其自身,即元注释类型。它只能用在注释类型声明上:
@Target(ElementType.ANNOTATION_TYPE)
public@interface MetaAnnotationType {
...
}
此元注释指示该声明类型只可作为复杂注释类型声明中的成员类型使用。它不能直接用于注释:
@Target({})
public@interface MemberType {
...
}
这是一个编译时错误,它表明一个 ElementType 常量在Target 注释中出现了不只一次。例如,以下元注释是非法的:
@Target({ElementType.FIELD,ElementType.METHOD, ElementType.FIELD})
public@interface Bogus {
...
}
认识两个枚举:RetentionPolicy和ElementType
RetentionPolicy
注释保留策略。此枚举类型的常量描述保留注释的不同策略。它们与 Retention 元注释类型一起使用,以指定保留多长的注释。
枚举常量摘要 | |
CLASS |
|
RUNTIME |
|
SOURCE |
|
ElementType
程序元素类型。此枚举类型的常量提供了 Java 程序中声明的元素的简单分类。
这些常量与 Target
元注释类型一起使用,以指定在什么情况下使用注释类型是合法的。
枚举常量摘要 | |
ANNOTATION_TYPE |
|
CONSTRUCTOR |
|
FIELD |
|
LOCAL_VARIABLE |
|
METHOD |
|
PACKAGE |
|
PARAMETER |
|
TYPE |
|
例子:
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.ElementType;
@Retention(RetentionPolicy.RUNTIME)//元注解,为注解ItcastAnnotation作解释。表示该注解保留的的阶段是运行期
@Target({ElementType.METHOD,ElementType.TYPE})//元注解,表示ItcastAnnotation作用的目标可以是方法上,也可以是TYPE上。
public@interfaceItcastAnnotation {//
}
自定义注解中增加各种属性实例:
自定义一个注解ItcastAnnotaton
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.ElementType;
@Retention(RetentionPolicy.RUNTIME)//元注解,为注解ItcastAnnotation作解释。表示该注解保留的的阶段是运行期
@Target({ElementType.METHOD,ElementType.TYPE})//元注解,表示ItcastAnnotation作用的目标可以是方法上,也可以是TYPE上。
public@interfaceItcastAnnotaton {
String color();//Stringcolor();default "blue";
String value();//特殊,当仅是此需设置值时(原value=“abc”),可省略为(“abc”)
int[] arrrayAttr()default{3,4,4};//数组成员
}
应用在类中
@ItcastAnnotaton(color= "red",value="abc",arrrayAttr=1)
publicclass AnnotationTest1
{ publicstaticvoid main(String[] args)throws Exception
{
if(AnnotationTest1.class.isAnnotationPresent(ItcastAnnotaton.class))
{ ItcastAnnotaton annotation=
(ItcastAnnotaton)AnnotationTest1.class.getAnnotation(ItcastAnnotaton.class);
System.out.println(annotation.color());//打印结果为red
}
}
}
---------------------- android培训、java培训、期待与您交流! ----------------------