服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

java中的annotation解析之二(1)

一、java 中的annotation的定义

java中的annotation

java定义了几个标准的meta-annotation,在新package中java.lang.annotation 中包含了以下meta-annotation:

meta-annotation 说明

@target 1. annotation的target是一个被标注的程序元素。target说明了annotation所修饰的对象范围:annotation可被用于packages、types(类、接口、枚举、annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在annotation类型的声明中使用了target可更加明晰其修饰的目标。

meta-annotation说明
@target1. annotation的target是一个被标注的程序元素。target说明了annotation所修饰的对象范围:annotation可被用于packages、types(类、接口、枚举、annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在annotation类型的声明中使用了target可更加明晰其修饰的目标。

2. elementtype的定义

type// class, interface, or enum (but not annotation)

field// field (including enumerated values)

method// method (does not include constructors)

parameter// method parameter

constructor// constructor

local_variable// local variable or catch clause

annotation_type// annotation types (meta-annotations)

package// java package

@retention1. source//按照规定使用注释,但是并不将它保留到编译后的类文件中

2. class//将注释保留在编译后的类文件中,但是在运行时忽略它

3. runtime//将注释保留在编译后的类文件中,并在第一次加载类时读取它
@documenteddocumented 表示注释应该出现在类的 javadoc 中
@inherited一个annotation将被继承

三个标准的annotation 在java.lang包中:

@deprecated对不再使用的方法进行注释
@override指明注释的方法覆盖超类的方法
@suppresswarnings阻止编译器的警告,例:当类型不安全时

下例来说明这三个标准的annotation:

package sz.starbex.bill.annotation;

import java.util.arraylist;

import java.util.list;

public class simpleoverrideannotation {

public static void main(string[] args) {

simpleoverrideannotation test = new simpleoverrideannotation();

system.out.println(test.tostring());

}

@override

public string tostring() {

return "自己的类自己输出";

}

@deprecated

public void dosomething() {

system.out.println("方法已过时" );

}

@suppresswarnings(value={"unchecked"})

public void testsuppresswarnings(){

list testlist=new arraylist();

testlist.add("kkkk");//没有使用范型,类型不安全

}

}

一、java 中的annotation的定义

java中的annotation

java定义了几个标准的meta-annotation,在新package中java.lang.annotation 中包含了以下meta-annotation:

meta-annotation 说明

@target 1. annotation的target是一个被标注的程序元素。target说明了annotation所修饰的对象范围:annotation可被用于packages、types(类、接口、枚举、annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在annotation类型的声明中使用了target可更加明晰其修饰的目标。

meta-annotation说明
@target1. annotation的target是一个被标注的程序元素。target说明了annotation所修饰的对象范围:annotation可被用于packages、types(类、接口、枚举、annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在annotation类型的声明中使用了target可更加明晰其修饰的目标。

2. elementtype的定义

type// class, interface, or enum (but not annotation)

field// field (including enumerated values)

method// method (does not include constructors)

parameter// method parameter

constructor// constructor

local_variable// local variable or catch clause

annotation_type// annotation types (meta-annotations)

package// java package

@retention1. source//按照规定使用注释,但是并不将它保留到编译后的类文件中

2. class//将注释保留在编译后的类文件中,但是在运行时忽略它

3. runtime//将注释保留在编译后的类文件中,并在第一次加载类时读取它
@documenteddocumented 表示注释应该出现在类的 javadoc 中
@inherited一个annotation将被继承

三个标准的annotation 在java.lang包中:

@deprecated对不再使用的方法进行注释
@override指明注释的方法覆盖超类的方法
@suppresswarnings阻止编译器的警告,例:当类型不安全时

下例来说明这三个标准的annotation:

package sz.starbex.bill.annotation;

import java.util.arraylist;

import java.util.list;

public class simpleoverrideannotation {

public static void main(string[] args) {

simpleoverrideannotation test = new simpleoverrideannotation();

system.out.println(test.tostring());

}

@override

public string tostring() {

return "自己的类自己输出";

}

@deprecated

public void dosomething() {

system.out.println("方法已过时" );

}

@suppresswarnings(value={"unchecked"})

public void testsuppresswarnings(){

list testlist=new arraylist();

testlist.add("kkkk");//没有使用范型,类型不安全

}

}

扫描关注微信公众号