注解

refer from :http://www.iteye.com/topic/223891



注解的学习


1.声明了一个注释 

  1. @Retention(RetentionPolicy.RUNTIME)  
  2. public @interface TestAnno {  
  3.       
  4. }  



2.声明了一个含有private变量a的类 

  1. public class TestAnnotation {  
  2.     @TestAnno  
  3.     private String a;  
  4.   
  5.     public String getA() {  
  6.         return a;  
  7.     }  
  8.   
  9.     public void setA(String a) {  
  10.         this.a = a;  
  11.     }  
  12.   
  13. }  



3.通过反射为a赋值 

  1. public class MainTest {  
  2.     public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException {  
  3.         TestAnnotation ta=new TestAnnotation();  
  4.         Field[] fs=TestAnnotation.class.getDeclaredFields();  
  5.         for(int i=0;i<fs.length;i++){  
  6.             if(fs[i].isAnnotationPresent(TestAnno.class)){  
  7.                 fs[i].setAccessible(true);  
  8.                 fs[i].set(ta, "你好");  
  9.             }  
  10.         }  
  11.         System.out.println(ta.getA());  
  12.     }  
  13. }  


关键是fs[i].setAccessible(true);这个方法,如果不设置这个方法则会抛出java.lang.IllegalAccessException的异常。网上也有人说setAccessible有安全性限制不要随便乱用。不过至少可以做到

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值