黑马程序员_高新技术之注解浅谈

来源:互联网 发布:spark sql decimal 编辑:程序博客网 时间:2024/06/05 12:43

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------


一、注解的概述

注解相当于一种标记,在程序中加入了注解就等于为程序打上了某种标记,没加,则等于没有某种标记。开发工具和其他程序都可以用反射来了解类及各种元素上有五标记,及查看标记种类,然后去做相对应的事情。

注解可以加在包、类、字段、方法、方法的参数以及局部变量上。


二、注解的应用结构图


、Java提供的几个基本注解

1、@SuppressWarnings的应用

通过System.runFinalizersOnExit(true);编译器会发出警告

这时候只需要加上@SuppressWarnings(“deprecation”)表示禁止警告(过期)。

2、@Deprecated

在方法上面加@Deprecated表示该方法过期,不建议试用。

3、@Override

@Override表示下边的方法是继承父类方法,对其覆盖。


四、自定义注解及其应用

1、定义一个简单的注解

<span style="font-size:18px;"><span style="white-space:pre"></span>public @interface MyAnnotation{}</span>
2、将定义的注解应用在类中

<span style="font-size:18px;"><span style="white-space:pre"></span>@ MyAnnotation<span style="white-space:pre"></span>public Class AnnotationTest{      <span style="white-space:pre"></span>}</span>
3、用反射进行测试AnnotationTest类的定义是否有@MyAnnotation

根据测试结果引出了@Retention元注解,元注解有三个值,分别是:

1>、RetetionPolicy.SOURCE对应java源文件即编译时期

2>、RetetionPolicy.CLASS对应Class文件

3>、RetetionPolicy.RUNTIME对应内存中的字节码文件,即运行时期

4、@Target元注解

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

元注解及其枚举属性值都在java.lang.annptation包下面的类中。


五、为注解增加基本属性

1、我们知道注解的声明和接口类似,那么,我们也可以为其添加属性

从java语言规范中得知,对于注解的属性类型有限制,只能是8个基本类型、String类型、Enum类型、Annotation注解类型和Class类型。

<span style="font-size:18px;"><span style="white-space:pre"></span>public @interface MyAnnotation{     <span style="white-space:pre"></span>String  name()  default "张三";  //添加String类型的属性,并设置默认(缺省)值为 张三。</span>
<span style="font-size:18px;"><span style="white-space:pre"></span>int[]  arr()   defauult  {1,2,3,4,5};<span style="white-space:pre"></span>//添加数组类型的属性,并设置默认(缺省)值。<span style="white-space:pre"></span>}</span>
2、添加了属性值的注解使用方法

@MyAnnotation(name = "张三", arr = {1,2,3,4,5})

如果数组属性中只有一个元素,这时候属性值部分可以省略大括号。

3、枚举和注解类型的属性

枚举和注解都是特殊的类,不能用new创建他们的实例对象,创建枚举的实例对象就是在其中添加元素。


---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

详细请查看:www.itheima.com

0 0
原创粉丝点击