JAVA注解及应用 (Annotation 功能)

JAVA注解及应用

Deprecated

@Deprecated 注释的程序元素,不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择。

Override

表示一个方法声明打算重写超类中的另一个方法声明。

SuppressWarnings

指示应该在注释元素(以及包含在该注释元素中的所有程序元素)中取消显示指定的编译器警告。

package cn.itcast.day2; public class AnottationTest { /** * @param args */ @SuppressWarnings("deprecation") //告诉编译器,不要再提示我,我们知道是过时了的 public static void main(String[] args) { // TODO Auto-generated method stub System.runFinalizersOnExit(true); } @Deprecated //使此方法过时,别人再调用此方法时,就会提示已过时 public static void SayHello() { System.out.println("hi,我过时了的!"); } @Override //表明此方法是覆盖父类的某个方法,写错将无法编译 public String toString() { return "父类方法被覆盖了!"; } }

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

java.lang包中,可以看到jdk提供的最基本的annotation

定义一个最简单的注解:

public @interface MyAnnotation {

}

把它加在某个类上:

@MyAnnotation public class AnnotationTest{

}

用反射进行测试AnnottationTest的定义上是否有@MyAnnotation

根据反射测试的问题,引出@Retention元注解的讲解,其三种取值:

RetetionPolicy.SOURCERettionPolicy.CLASSRetetionPolicy.RUNTIME;分别对应:java源文—-> class文件à内存中的字节码。

演示和讲解@Target元注解

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

元注解以及基枚举属性值不用记,只要会看jdk提供那几个基本注解的API帮助文档的定义或其源代码,近产索引即可查到,或都直接看java.lang.annotation包下面的类。

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.METHOD, ElementType.TYPE}) public @interface ItcastAnnotation { }

 

package cn.itcast.day2; @ItcastAnnotation public class AnnotationTest { /** * @param args */ @SuppressWarnings("deprecation") //告诉编译器,不要再提示我,我们知道是过时了的 public static void main(String[] args) { System.runFinalizersOnExit(true); if(AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)){ ItcastAnnotation annotation = (ItcastAnnotation)AnnotationTest.class.getAnnotation(ItcastAnnotation.class); System.out.println(annotation); } } @Deprecated //使此方法过时,别人再调用此方法时,就会提示已过时 public static void SayHello() { System.out.println("hi,我过时了的!"); } @Override //表明此方法是覆盖父类的某个方法,写错将无法编译 public String toString() { return "父类方法被覆盖了!"; } }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值