首页 > 代码库 > Rhythmk 一步一步学 JAVA (19): 注解 annotation
Rhythmk 一步一步学 JAVA (19): 注解 annotation
在编写注解的时候需要了解的四种注解:
@Target
表示该注解可以用于什么地方,可能的ElementType参数有:
CONSTRUCTOR:构造器的声明
FIELD:域声明(包括enum实例)
LOCAL_VARIABLE:局部变量声明
METHOD:方法声明
PACKAGE:包声明
PARAMETER:参数声明
TYPE:类、接口(包括注解类型)或enum声
@Retention
表示需要在什么级别保存该注解信息。可选的RetentionPolicy参数包括:
SOURCE:注解将被编译器丢弃
CLASS:注解在class文件中可用,但会被VM丢弃
RUNTIME:VM将在运行期间保留注解,因此可以通过反射机制读取注解的信息。
@Document
将注解包含在Javadoc中
@Inherited
允许子类继承父类中的注解
定义一个注解:
package com.rhythmk.annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Target(value = ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)public @interface RService { String[] value() default "working"; RunEnum Run();}
注解使用:
@RService(value=http://www.mamicode.com/{"v1","v2"},Run=RunEnum.Run)public interface UserService { String findUserById(int id); String saveUser(String userName);}
通过isAnnotationPresent 判断该类是否存在某注解:
Class<?> usCls = UserService.class; // 判断改类是否使用了该注解 boolean isAnnotationRService = usCls .isAnnotationPresent(RService.class);
获取该类注解配置的数值:
RService rService = UserService.class.getAnnotation(RService.class); for (String v : rService.value()) { System.out.println("注解Value:" + v); } System.out.println("枚举:" + rService.Run());
Rhythmk 一步一步学 JAVA (19): 注解 annotation
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。