- package typeinfo;
- import typeinfo.interfacea.A;
- import typeinfo.packageaccess.HiddenC;
- import java.lang.reflect.Method;
- public class HiddenImplementation {
- public static void main(String[] args) throws Exception {
- A a = HiddenC.makeA();
- a.f();
- System.out.println(a.getClass().getName());
- // Oops! Reflection still allows us to call g():
- callHiddenMethod(a, "g");
- // And even methods that are less accessible!
- callHiddenMethod(a, "u");
- callHiddenMethod(a, "v");
- callHiddenMethod(a, "w");
- }
- static void callHiddenMethod(Object a, String methodName) throws Exception {
- Method g = a.getClass().getDeclaredMethod(methodName);
- g.setAccessible(true);
- g.invoke(a);
- }
- }
大年夜输出结不雅我们可以看出来,不管是public,default,protect照样private办法,经由过程反射类我们都可以自由调用。当然这里我们只是为了显示反射的强大年夜威力,在实际开辟中这种技能照样不倡导。
- public C.f()
- typeinfo.packageaccess.C
- public C.g()
- package C.u()
- protected C.v()
- private C.w()
膳绫擎我们只是测试了Method对象,感兴趣的读者在熟悉了反射的API之后,不妨测试一下Filed,这里我们就不反复了。
应用动态代劳实现面向切面编程
AOP是Spring供给的一个强大年夜特点之一,AOP的意思是面向切面编程,就是说要分别和营业不相干的代码,当我们须要新增相干的事务的时刻,我们不想对营业本身做修改。面向切面编程和面向对象变成比拟到底有什么好处呢,我们经由过程一个例子来看一下,对于新手来说,经常会写出下面如许的代码:
- public class Example1 {
- public void execute() {
- // 记录日记
- Logger logger = Logger.getLog(...);
- // 进行机能统计
- PerformanceUtil.startTimer(...);
- // 权限检查
推荐阅读
常见用法: netstat –npl 可以查看你要打开的端口是否已经打开。 netstat –rn 打印路由表信息。 netstat –in 供给体系上的接口信息,打印每个接口的MTU,输入分>>>详细阅读
本文标题:Java反射机制应用实践
地址:http://www.17bianji.com/lsqh/35285.html
1/2 1