作家
登录

Java反射机制应用实践

作者: 来源: 2017-05-18 08:56:25 阅读 我要评论

  1. package typeinfo; 
  2.  
  3. import typeinfo.interfacea.A; 
  4. import typeinfo.packageaccess.HiddenC; 
  5.  
  6. import java.lang.reflect.Method; 
  7.  
  8. public class HiddenImplementation { 
  9.     public static void main(String[] args) throws Exception { 
  10.         A a = HiddenC.makeA(); 
  11.         a.f(); 
  12.         System.out.println(a.getClass().getName()); 
  13.         // Oops! Reflection still allows us to call g(): 
  14.         callHiddenMethod(a, "g"); 
  15.         // And even methods that are less accessible! 
  16.         callHiddenMethod(a, "u"); 
  17.         callHiddenMethod(a, "v"); 
  18.         callHiddenMethod(a, "w"); 
  19.     } 
  20.  
  21.     static void callHiddenMethod(Object a, String methodName) throws Exception { 
  22.         Method g = a.getClass().getDeclaredMethod(methodName); 
  23.         g.setAccessible(true); 
  24.         g.invoke(a); 
  25.     } 
  26.  

大年夜输出结不雅我们可以看出来,不管是public,default,protect照样private办法,经由过程反射类我们都可以自由调用。当然这里我们只是为了显示反射的强大年夜威力,在实际开辟中这种技能照样不倡导。

  1. public C.f() 
  2. typeinfo.packageaccess.C 
  3. public C.g() 
  4. package C.u() 
  5. protected C.v() 
  6. private C.w()  

膳绫擎我们只是测试了Method对象,感兴趣的读者在熟悉了反射的API之后,不妨测试一下Filed,这里我们就不反复了。

应用动态代劳实现面向切面编程

AOP是Spring供给的一个强大年夜特点之一,AOP的意思是面向切面编程,就是说要分别和营业不相干的代码,当我们须要新增相干的事务的时刻,我们不想对营业本身做修改。面向切面编程和面向对象变成比拟到底有什么好处呢,我们经由过程一个例子来看一下,对于新手来说,经常会写出下面如许的代码:

  1. public class Example1 { 
  2.     public void execute() { 
  3.         // 记录日记 
  4.         Logger logger = Logger.getLog(...); 
  5.         // 进行机能统计 
  6.         PerformanceUtil.startTimer(...); 
  7.         // 权限检查 

      推荐阅读

      Linux性能分析工具汇总合集

    常见用法: netstat –npl 可以查看你要打开的端口是否已经打开。 netstat –rn 打印路由表信息。 netstat –in 供给体系上的接口信息,打印每个接口的MTU,输入分>>>详细阅读


    本文标题:Java反射机制应用实践

    地址:http://www.17bianji.com/lsqh/35285.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)