网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

java反射机制初探

最近再看书时,书中使用了java的动态代理机制,随即在网上搜了些文章看了一下,既然有动态代理那就有静态代理,所谓静态代理,就是在你些的代理类中需要使用到具体的被代理类。而所谓动态代理,则不需要在代理类中使用到被代理类,根本不知道起要代理那个类。在jdk1.3后java加入了动态代理功能的api,动态代理主要用在面向接口编程上,业务逻辑的实现类必须实现某业务接口,通过使用动态代理, 我们可以在代理类中拦截器功能。java的动态代理功能是通过实现java.lang.reflect.InvocationHandler接口来实现的。实现类必须实现接口中定义的invoke方法。下面是一段实现动态代理的代码。[@more@]

最近再看书时,书中使用了java的动态代理机制,随即在网上搜了些文章看了一下,既然有动态代理那就有静态代理,所谓静态代理,就是在你些的代理类中需要使用到具体的被代理类。而所谓动态代理,则不需要在代理类中使用到被代理类,根本不知道起要代理那个类。在jdk1.3后java加入了动态代理功能的api,动态代理主要用在面向接口编程上,业务逻辑的实现类必须实现某业务接口,通过使用动态代理, 我们可以在代理类中拦截器功能。java的动态代理功能是通过实现java.lang.reflect.InvocationHandler接口来实现的。实现类必须实现接口中定义的invoke方法。下面是一段实现动态代理的代码。

成都创新互联于2013年开始,先为柳城等服务建站,柳城等地企业,进行企业商务咨询服务。为柳城企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

package com.spring;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.logging.*;

/**
* 此类用于实现动态代理
* @author paul
*
*/

public class LogHandler implements InvocationHandler {

private Logger logger = Logger.getLogger(this.getClass().getName());

private Object delegate;

//绑定被代理对象,返回被代理对象所实现的接口
public Object bind(Object delegate) {
this.delegate = delegate;
return Proxy.newProxyInstance(delegate.getClass().getClassLoader(),
delegate.getClass().getInterfaces(), this);
}

public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Object result = null;
try {
log("method1" + method);
result = method.invoke(delegate, args);
logger.log(Level.INFO, "method ends" + method);
} catch (Exception e) {
log(e.toString());
}

return result;
}

private void log(String message) {
logger.log(Level.INFO, message);
}

}

一下是定义业务逻辑方法的

package com.spring;

public interface IHello {
public void hello(String name);
}

一下是接口实现类,即业务逻辑实现类

package com.spring;

/**
* 此类用于实现业务逻辑
* @author Administrator
*
*/
public class HelloSpeaker implements IHello {
/**
* 实现接口方法
* @return void
*/
public void hello(String name) {
System.out.println("Hello," + name);

}

}

一下是用于测试的类

package com.spring;

public class ProxyDemo {

/**
* @param args
*/
public static void main(String[] args) {
// HelloProxy proxy=new HelloProxy(new HelloSpeaker());
// proxy.hello("paul");
LogHandler loghandler = new LogHandler();
IHello helloProxy = (IHello) loghandler.bind(new HelloSpeaker());// 绑定代理对象
helloProxy.hello("paul");// 该句执行时会调用invoke方法

}

}


标题名称:java反射机制初探
文章出自:http://bjjierui.cn/article/jjgppe.html

其他资讯