首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事

java反射机制 怎样获取到类上面的注解

发布网友 发布时间:2022-04-25 12:34

我来回答

5个回答

热心网友 时间:2022-05-19 13:27

// 定义注解并指定java注解保留策略为运行时RUNTIME,运行时注入到JAVA字节码文件里
// 这样才可以在运行时反射并获取它。
@java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@interface MyAnnotation{
String key() default "";
int value()  default 0; 
}

// 使用注解
@MyAnnotation(key="key1",value=200)
class MyClass{}

// 反射注解
public static void main(String[] args){
   MyClass myClass=new MyClass();
   MyAnnotation annotation=myClass.getClass().getAnnotation(MyAnnotation.class);
   System.out.println("key="+annotation.key()+"\tvalue="+annotation.value());
}

热心网友 时间:2022-05-19 14:45

Annotation[]
getAnnotations()Returns all annotations present on this element.

热心网友 时间:2022-05-19 16:20

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface asd {

String getUserName();
}

@asd(getUserName="zhangsan")
public class Test {
public static void main(String[] args) {

asd anno = Test.class.getAnnotation(asd.class);
if(anno != null){
Method[] met = anno.annotationType().getDeclaredMethods();
for(Method me : met ){
if(!me.isAccessible()){
me.setAccessible(true);
}
try {
System.out.println(me.invoke(anno, null));
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}

}
}

热心网友 时间:2022-05-19 18:11

看这篇博客https://blog.csdn.net/bugggget/article/details/80283258

热心网友 时间:2022-05-19 20:19

你这个太深奥了 我没法接

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com