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

Java千百问_03基础语法(021)_如何自定义注解

2016-07-09 09:48 567 查看
点击进入_更多_Java千百问color=”#ff0000”

1、如何自定义注解

要学习使用注解,我们需要了解注解,并且了解java提供的常见注解。更重要的是学会自定义注解。

了解注释看这里:注释是什么

我们自定义注解需要使用@interface关键字,具体语法如下:

public @interface 注解名 {定义体} default {默认值}


使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口,由编译程序自动完成其他细节。在定义注解时,不能继承其他的注解或接口。

@interface用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数。方法的名称就是参数的名称,返回值类型就是参数的类型。通过default来声明参数的默认值,如果不指定default,则说明该参数为必填。

注解参数(注解方法的返回值)的只能用public或默认(default)这两个访问权修饰,并且只支持以下数据类型:

所有基本数据类型(int,float,boolean,byte,double,char,long,short)

String类型

Class类型

enum类型

Annotation类型

以上所有类型的数组

我们一般是用反射来获取注解,一个简单的自定义注解和使用注解实例:

注解类:

@Retention(RetentionPolicy.RUNTIME)
public @interface TestAnnotation {

String name() default "";
}


被注解的类:

public class TestInfo {

@TestAnnotation(name = "公司名称")
private String company;

@TestAnnotation(name = "职位")
private String position;
}


使用注解:

public class TestMain {

public static void main(String[] args) {
Field[] fields = TestInfo.class.getDeclaredFields();
for (Field field : fields) {
if (field.isAnnotationPresent(TestAnnotation.class)) {
TestAnnotation testAnnotation = (TestAnnotation) field.getAnnotation(TestAnnotation.class);
System.out.println("field:" + field.getName() + ", annotation:" + testAnnotation.name());
}
}
}
}


我们运行后结果如下:

field:company, annotation:公司名称

field:position, annotation:职位


其中注解类中的注解@Retention(RetentionPolicy.RUNTIME),是用来修饰注解的注解,即元注解,用来描述和限定自定义注解的使用场景和约束。具体如下:

了解元注解看这里:[元注解是什么][3]

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