package com.yhouse.modules.daos;

public interface IUserDao {
public String getUserName();
public String Say();
}

2.

package com.yhouse.modules.daos;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class MethodProxy implements InvocationHandler {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
//如果传进来是一个已实现的具体类(本次演示略过此逻辑)
if (Object.class.equals(method.getDeclaringClass())) {
try {
return method.invoke(this, args);
} catch (Throwable t) {
t.printStackTrace();
}
//如果传进来的是一个接口(核心)
} else {
System.out.println(method.getName());
return run(method, args);
}
return null;
} /**
* 实现接口的核心方法
* @param method
* @param args
* @return
*/
public Object run(Method method,Object[] args){
//TODO
//如远程http调用
//如远程方法调用(rmi)
//.... return "method call success!";
}
}

3.

package com.yhouse.modules.daos;

import java.lang.reflect.Proxy;

public class Test {

    public static void main(String[] args) throws ClassNotFoundException {
// TODO Auto-generated method stub String className = "com.yhouse.modules.daos.IUserDao";
String methodName = "Say";
Class clz = Class.forName(className); // Object newProxyInstance = Proxy.newProxyInstance(IUserDao.class.getClassLoader(), new Class[]{IUserDao.class},m);
MethodProxy m=new MethodProxy();
Object newProxyInstance = Proxy.newProxyInstance(clz.getClassLoader(), new Class[]{clz},m); IUserDao ud=((IUserDao)newProxyInstance);
String s= ud.getUserName();
System.out.println(s); String s1=ud.Say();
System.out.println(s1); } }

最新文章

  1. Rust的力量
  2. 【重要更新】Senparc.Weixin SDK v4.3.3升级说明
  3. 【转】【MySQL】mysql 通过bin-log恢复数据方法详解
  4. Android开发中Bundle用法包裹数据(转)
  5. google calendar api v3
  6. web安全培训笔记
  7. 数据库 —— mySQL 的安装
  8. AngularJS 基础用法
  9. 关于NOIP2014“无线网络发射器选址”一题的衍生题目的思考及思维方向
  10. 201621123050 《Java程序设计》第5周学习总结
  11. Shell中map的使用
  12. 编译安装lamp环境
  13. Codeforces Round #319 (Div. 2) E - Points on Plane
  14. 经典sql-获取当前文章的上一篇和下一篇
  15. assert_param
  16. Xcode 10 如何创建自定义 Snippet
  17. java虚拟机类加载
  18. C#多线程数据分布加载
  19. Android之获取内外部存储器的容量
  20. List多个字段标识过滤

热门文章

  1. mysql安装配置、主从复制配置详解【转】
  2. 一些汇编中的 trick
  3. C#设计模式视频教程(不知道讲的好不好,刚刚看到)
  4. Docker(二):Docker的用途
  5. ef core 2.1 利用Query Type查询视图
  6. Axisfault faultcode:Server.userException异常
  7. 维生素C - 坏血症
  8. MariaDB+Galera+Haproxy+Keepalived搭建集群
  9. java之properties和yml两种配置文件比较(非原创)
  10. php从数据库选取记录形成列表(首页调用)