`
xuelianbobo
  • 浏览: 171461 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

java jkd动态代理

 
阅读更多
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class JdkProxyTest {
	/***
	 * 动态代理的测试方法
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		StudentProxy studentProxy = new StudentProxy(new Student());
		IStudent iStudent = (IStudent) studentProxy.getProxyInstence();
		iStudent.say();
		
	}
}

/***
 * 代理类 实现了jdk 动态代理的方法
 * 
 * @author bobo
 * 
 */
class StudentProxy implements InvocationHandler {
	/**
	 * 要代理的目标对象
	 */
	private Object target;

	/***
	 * 代理方法的执行处
	 */
	public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
		// 此处的proxy 是个什么东东呢 实在是不能理解啊
		System.out.println(proxy.getClass().getInterfaces().length);
		System.out.println("before...");
		Object obj = method.invoke(target, args);
		System.out.println("after...");
		return obj;
	}

	/***
	 * 获得代理对象的地方
	 * 
	 * @param c
	 * @return
	 */
	public Object getProxyInstence() {
		return Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), target.getClass().getInterfaces(), this);
	}

	public StudentProxy(Object obj) {
		this.target = obj;
	}
}

/**
 * 要被代理的类
 * 
 * @author bobo
 * 
 */
class Student implements IStudent {

	public String say() {
		System.out.println("Student.say()");
		return "i say:";
	}

}

/***
 * 被代理的类要是实现的接口
 * 
 * @author bobo
 * 
 */
interface IStudent {
	String say();
}

 

 

分享到:
评论
1 楼 xuelianbobo 2014-07-01  
其实这么看来,JDK的自带的动态代理也是动态生成了字节码(当然当中还用了反射),只是他的生成字节码的方式必须和接口绑定,而cglib,并不是正对接口来而是针对普通类来动态的生成字节码

相关推荐

    java java jkd11 win64

    java java jkd11 win64

    java jkd 1.8.0

    java jkd 1.8.0

    jkd环境变量设置

    详细表述JDK在win7上的设置过程,适合java的初学者

    luyten-0.5.3-java-jkd1.8

    luyten-0.5.3-java-jkd1.8

    win10 java 11(JKD 11)安装包

    java11(JKD11)安装包

    官网下载java 64位1.8版本JDK

    官网上下载下来的64位JDK,给大家方便大家直接拿来用。 有点大,所以放在一个txt文档里面,望谅解。

    wise 打包JKD java 例子 无错 1

    搞了一天,终于搞定wise installation 打包 JDK JAVA 并注册环境变量 java_home classpath的问题 回头再总结吧.只能上传小于60M的文件,所以还得分三个包

    java-jdk-13.0.2_windows-x64_bin1.zip

    JDK环境包 Shenandoah:低暂停时间的 GC(实验性功能) ... 动态类文件常量 改进 Aarch64 函数 标准 HTTP 客户端 Lambda 参数的本地变量语法 Unicode 10 启动单文件源代码程序 可伸缩低延迟垃圾收集器

    wise 打包JKD java 例子 无错 2

    搞了一天,终于搞定wise installation 打包 JDK JAVA 并注册环境变量 java_home classpath的问题 回头再总结吧.只能上传小于60M的文件,所以还得分三个包

    jkd+tomcat安装环境配置

    可正常配置jkd,tomcat 变量名:JAVA_HOME 变量值:C:\Java\jdk1.6.0_04 变量名:JDK_HOME 变量值:C:\Java\jdk1.6.0_04\bin 变量名:CATALINA_BASE

    jkd 8 64位

    JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

    java 11下载,版本 11.0.17, linux各版本

    java11.0.17最新版本下载,上传时间2022.11.09, linux系统各版本安装包。

    wise 打包JKD java 例子 无错 3

    搞了一天,终于搞定wise installation 打包 JDK JAVA 并注册环境变量 java_home classpath的问题 回头再总结吧.只能上传小于60M的文件,所以还得分三个包

    jkd1.6中文API

    满足大家的需求,我在网到了 中文版的java 1.6 API

    jkd7,8,10,

    我是官网的搬运工,3个5积分,反正大家下载都是追求一个方便, 除了9官方不给下了,其他都弄来了;

    JDK13 13.0.2版本 Windows版

    目前13的最新版本。由于220m上传限制,这里提供百度云下载文档。或者点击链接进去QQ群下载。QQ群地址 https://jq.qq.com/?_wv=1027&k=5dZTsqZ

    jkd1.8中文文档。

    中文版的jdk1.8帮助文档,不再为纯英文文档头疼啦。适合刚学习java的小伙伴们,在编码之余更容易理解一些常用api接口的信息,更好的帮助大家夯实Java基础。

    jkd配置信息:path的值,classpath的值以及java_home的值

    jkd配置信息:path的值,classpath的值,以及java_home的配置信息和java的安装路径。

    jkd1.8-32.rar

    Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等

    Jdk1.8特性.md

    Jdk1.8特性.md

Global site tag (gtag.js) - Google Analytics