java反射

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值