您的位置:首页 > 编程语言 > Java开发

day_31Java注解---Annotation

2015-12-02 08:00 916 查看



星期二, 十二月 01, 2015 18:30:08

给编译器看的注释---Annotation

功能建立在反射机制之上,通过An可以对程序进行注释操作。

系统内建Anon、如何自定义、反射和n的关联,

以及如何通过ation生产Donted。

本章要点

掌握Annotation的相关概念

熟悉自定义Annotation的方法

了解反射和Annotation的关联

一、Annotation

Annotation 实际上表示的是一种注释的语法。

在java中最早的程序是提倡程序与配置代码相分离,

而最新的理论是将所有的配置直接写到程序之中,如果想完成这样的功能,就要使用Annotation。


伦理片 http://www.dotdy.com/

二、系统内建的Annotation
在jdk1.5之后的系统中,内建了3个Annotation:

@Override、@Deprecated、@SuppressWarinings。

2.1 @Override

表示进行正确的覆写操作

即使覆盖的方法名称写错了,也不会有任何的提示。

此时,为了保证程序可以正确地进行覆盖操作,在覆盖的时候可以明确地使用@Override表示方法是属于覆盖的操作。

代码案例:

Overridetest代码


package day30;

public class OverrideTest {

public static void main(String[] args) {

Student s = new Student();

System.out.print("..."+s.say());

}

}

class Person {

public String say() {

return "Person_say()";

}

}

//要求增加此类的子类,覆盖其方法

class Student extends Person {

/*为了保证程序可以正确地进行覆盖操作,

* 在覆盖的时候可以明确地使用@Override表示方法是属于覆盖的操作。*/

@Override

public String say() {

return "Student_say()";

}

}

运行结果:

...Student_say()

2.3@Deprecated

@Deprecated注释表示不建议使用的操作。

例如之前在讲解线程的时候,曾经讲解过线程中的stop()、resume()、suspend()等方法是不建议使用的。

代码案例:

Deprecatedtest代码


package day30;

public class DeprecatedTest {

public static void main(String[] args) {

System.out.print((new Info()).getInfo());

}

}

class Info {

/*@Deprecated注释表示不建议使用的操作。*/

@Deprecated

public String getInfo() {

return "getInfo()....";

}

}

运行结果:

getInfo()....

2.4 @SuppressWarnings

@SuppressWarnings表示的是压制警告。

如果有一些警告信息则可压制掉,不出现警告的提示。

@SuppressWarnings(“deprecation”)

使用SuppressWarnings操作的时候可以同时压制多个警告

通过SuppressWarnings的类,可以发现在此类中存在一个value的字符串数组。

Person类中既继承了Info类,又实现了序列化的接口,所有此时会出现多个警告。

或者可以明确的表示,是为SuppressWarnings中的value属性赋值。

代码案例:

Suppresswarningstest代码


package day30;

import java.io.Serializable;

public class SuppressWarningsTest {

@SuppressWarnings("deprecation")

public static void main(String[] args) {

System.out.print((new Infos()).getInfos());

}

}

class Infos {

@Deprecated

public String getInfos() {

return "....getInfos";

}

}

@SuppressWarnings(value = {"serial","deprecation"})

class Persona extends Infos implements Serializable {

/*Person类中既继承了Info类,又实现了序列化的接口,所此时会出现多个警告。*/

}

运行结果:

....getInfos

三、自定义Annotation

影音先锋电影 http://www.iskdy.com/
3.1定义Annotation的语法

public @interface Annotation的名称{}

案例:

public @interface MyAnnotation{

}

如果现在使用此Annotation的话,若不在同一个包中,则需要导入,导入之后使用@的形式反问,语法@MyAnnotation

@MyAnnotation

public class Info{

}

在一个Annotation中实际上也可以定义若干个属性。

public @interface MyAnnotation{

public String key();

public String value();

}

在此时Annotation中定义了key和value两个变量,若此时要使用Annotation的话,则必须明确地给出具体的内容。

@MyAnnotation(key="MLDN",value="www.baidu.com")

如果现在希望为一个Annotation设置默认内容的话,可以通过default完成。

public @interface MyAnnotation{

public String key() default “LXX”;

public String value() default “HA”;

}

如果没有设置内容,则将默认值去除继续使用。

Annotation中的变量内容可以通过枚举指定范围。

public enum Color {

RED,GREEN,BLUE;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: