java反射机制 怎样获取到类上面的注解
newMaterials().getClass().getAnnotations();这样写为什么不对呀都获取不出来...
new Materials().getClass().getAnnotations(); 这样写为什么不对呀都获取不出来
展开
5个回答
展开全部
// 定义注解并指定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());
}
2017-10-09
展开全部
Annotation[]
getAnnotations()Returns all annotations present on this element.
getAnnotations()Returns all annotations present on this element.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@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();
}
}
}
}
}
@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();
}
}
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询