java反射
来源:互联网 发布:android登陆界面源码 编辑:程序博客网 时间:2024/06/06 04:05
1,事例
//通过类加载器获取User类对象
ClassLoader Loader=Thread.currentThread().getContextClassLoader();
Class clazz=Loader.loadClass("com.wzj.User");
//获取类的默认构造对象并通过它实例化
Constructor cons=clazz.getDeclaredConstructor(Class[]null);
User u=(User)cons.newInstance();
Class clz=Class.forName("com.wzj.User");
User u=(User) clz.newInstance();//初始化对象
u.setName("张三");
//第一个参数是函数名称,第二个参数是.... (表示有无限个参数)表示函数的参数
Method method=clz.getMethod("show",String.class);
//第一个参数是调用函数的对象,第二个参数是函数执行时的参数
String str= (String)method.invke(u,"abc"); //u.show("abc"); 调用执行普通方法
//同样可以调用static的say方法, 静态方法两个string参数
Method m2 = clz.getMethod("say",String.class,String.class);
//调用static 的方法是使用class来调用
m2.invoke(clz,"ok","world");//调用执行静态方法
2,读取properties文件
Properties p=new Properties();
p.load(PropertiesUtil.class.getClassLoader().getResourceAsStream("app.properties"));
3,动态代理:
实现接口:
publicclassProxyHandler implementsInvocationHandler
public Object invoke( Object proxy, Method method, Object[] args ) throws Throwable { //在转调具体目标对象之前,可以执行一些功能处理 //转调具体目标对象的方法return method.invoke( proxied, args); //在转调具体目标对象之后,可以执行一些功能处理 }
publicstaticvoid main( String args[] ) { RealSubject real = new RealSubject(); Subject proxySubject = (Subject)Proxy.newProxyInstance(Subject.class.getClassLoader(), new Class[]{Subject.class}, new ProxyHandler(real)); proxySubject.doSomething();}
阅读全文
0 0
- 【反射】JAVA反射机制
- JAVA 反射
- java 反射
- Java反射
- java反射
- java反射
- JAVA反射
- java 反射
- Java 反射
- java 反射
- Java反射
- java反射
- JAVA 反射
- java 反射
- Java反射
- java反射
- java 反射
- java 反射
- 如何在vs2008,vs2010的解决方案管理器中快速定位文件位置
- 【Unity学习笔记】——基础篇:关于光照GI
- Hadoop平台搭建之Linux实验环境
- java之基本数据类型(笔记)
- 分治法
- java反射
- 20170709训练赛比赛总结
- C语言基础笔记2
- [图论] NKOJ 1952 运输问题
- 华为机试:字符个数统计、提取不重复的整数
- C语言基础笔记3
- 基于linux下的xshell脚本文件入门及例题
- htmlunit介绍
- PHP 命名空间