您的位置:首页 > 职场人生

黑马程序员_基础加强_注解

2013-03-21 08:58 369 查看
-------
android培训、java培训、期待与您交流! ----------

1、注解相当于一种标记,加了注解就等于打上了某种标记,没加,则等于没有某种标记,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上是否有标记,然后根据相应的标记去进行处理,标记可以加在包,类,字段,方法,方法的参数以及局部变量上,java5.0之后提供了三种基本的注解

Override:它说明被标注的方法重载了父类的方法,如果被标注的方法没有重载父类的方法,编译时会出现错误

Deprecated:它说明被标注的方法已过期,当你使用被标注的方法时,会提示你使用的是一个已过期的方法

SuppressWarnings:此注解用来提示忽略编译器的警告,如:SuppressWarnings(“deprecation”)提醒编译器忽略已过期的方法,在进行编译时,就不会出现方法过期提醒了

2、注解就相当于源程序中要调用的一个类,要在源程序中调用一个类,要先准备好这个注解类。

3、定义一个注解类@interface A{},一个类上可以使用多个注解

4、元注解:Retention,声明注释类型的注解要保存多长时间,和RetentionPolicy一起使用,RetentionPolicy有三种取值:RetentionPolicy.SOURCE,RetentionPolicy.CLASS,RetentionPolicy.RUNTIME,分别对应java源程序、CLASS文件、内存中的字节码

Targer和ElementType使用,指定在哪里使用注解是合法的,即另外一个类在使用此注解时,只能把此注解使用在ElementType指定的位置,ElementType有其中取值:ANNOTATION_TYPE(注释类型声明)、CONSTRUCTOR(构造方法声明)、FIELD(字段声明(包括枚举常量))、LOCAL_VARIABLE(局部变量声明)、METHOD(方法声明)、PACKAGE(包声明)、PARAMETER(参数声明)、TYPE(类、接口(包括注释类型)或枚举声明)

定义一个注解类

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
//元注解
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)//说明此注解类是是使用在类中的
//@Target(ElementType.METHOD) 说明此注解类是使用在方法上的
public @interface ItcastAnnotation {

}


注解类的使用示例

import java.lang.annotation.ElementType;

//AnnotationTest类使用了ItcastAnnotation注解
@ItcastAnnotation
public class AnnotationTest {

/**
* @param args
*/
//利用注解提醒忽略已过期的方法
@SuppressWarnings("deprecation")
//@ItcastAnnotation
//注解不能使用在这里,此注解的Target的值为ElementType.TYPE,只能使用在类上
//如果ItcastAnnotation的Target值为ElementType.METHOD,则可以用在此处
public static void main(String[] args) {
// TODO Auto-generated method stub
System.runFinalizersOnExit(true);
//AnnotationTest上是否使用了ItcastAnnotation注解
if(AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class))
{
//通过反射返回ItcastAnnotation对象
ItcastAnnotation annotation=(ItcastAnnotation)AnnotationTest.class.getAnnotation(ItcastAnnotation.class);
System.out.println(annotation);
}
}
//提醒sayHello方法过时
@Deprecated
public static void sayHello()
{
System.out.println("黑马程序员,我来啦!");
}
//提醒是否覆盖方法
@Override
public boolean equals(Object t)
{
return true;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: