发布网友 发布时间: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
你这个太深奥了 我没法接