标签:地方 目录 文件 子类 文件中 保存 ret policy tab
目录
注解(也被称为元数据)为我们在代码中添加信息提供了一中形式化的方法,是我们可以在稍后的某个时刻非常方便地使用这些数据;
定义在了Java.lang中
元注解专职负责注解其他的注解
@Target | 表示该注解可以用于什么地方。可能的ElementType参数有: |
---|---|
CONSTRUCTOR: 构造器的声明 | |
FIELD : 域声明(包括enum实例) | |
LOCAL_VARIABLE :局部变量声明 | |
METHOD : 方法声明 | |
PACKAGE :包声明 | |
PARAMETER :参数声明 | |
TYPE :类,接口(包括注解类型)或enum声明 |
@Retention | 表示需要在什么级别保存该注解信息。可选的RetentionPolicy参数: |
---|---|
SOURCE :注解将被编译器丢弃 | |
CLASS :注解在class文件中可用,但会被VM丢弃 | |
RUNTIME :VM将在运行时期也保留注解,因此可以通过反射获取注解的信息 |
@Documented | 将次注解包含在Javadoc中 |
---|---|
@Inherited | 允许子类继承父类中的注解 |
注解元素的可用类型:
如果使用其他类型,编译器会报错,也不允许使用其他任何包装类型;
/**
* @author gyc
* @date 2018/8/2
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface AnnotationOne {
String name() default "";
int age() default 1;
}
public class Test {
public static void main(String[] args) throws ClassNotFoundException {
//获取class
Class<?> aClass = Class.forName("com.example.demo.annotation.one.User");
//获取类中的定义
Method[] declaredMethods = aClass.getDeclaredMethods();
for (Method method:declaredMethods){
//根据注解class对象获取method的注解
AnnotationOne annotation = method.getAnnotation(AnnotationOne.class);
System.out.println(method.getName()+"的注解:");
System.out.println("name的值是:"+annotation.name()+" age的值是:"+annotation.age());
System.out.println();
}
}
}
class User{
@AnnotationOne(name = "aaa",age = 10)
public void testOne(){
}
@AnnotationOne()
public void testTwo(){
}
}
testOne的注解:
name的值是:aaa age的值是:10
testTwo的注解:
name的值是: age的值是:1
标签:地方 目录 文件 子类 文件中 保存 ret policy tab
原文地址:https://www.cnblogs.com/guoyuchuan/p/9467377.html