当前位置: 首页 > news >正文

学校网站建设 论文呢/新闻联播今日新闻

学校网站建设 论文呢,新闻联播今日新闻,商场大型话题活动策划网站,政府网站建设的好处[b][colorgreen][sizelarge]在Java的java.lang.reflect包下提供了一个Proxy类和一个InvocationHandler接口,通过这个类和接口,可以生成JDK动态代理类或动态代理对象。Proxy提供了用于创建动态代理类和代理对象的静态方法,它也是所有动态代理类…
[b][color=green][size=large]在Java的java.lang.reflect包下提供了一个Proxy类和一个InvocationHandler接口,通过这个类和接口,可以生成JDK动态代理类或动态代理对象。

Proxy提供了用于创建动态代理类和代理对象的静态方法,它也是所有动态代理类的父类,如果在程序中为一个或多个接口动态的生成实现类,就可以使用Proxy来创建动态代理类,
如果需要为一个或多个接口动态的创建实例,也可以使用Proxy来创建动态代理实例。

Proxy提供了如下两个方法,来创建动态代理类和动态代理实例。

getProxyClass(ClassLoader loader, Class<?>... interfaces)
创建一个动态代理类所对应的Class对象,该代理类将实现interfaces所指定的多个接口,第一个ClassLoader参数指定生成动态代理类的类加载器。


newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)
直接创建一个动态代理对象,该代理对象的实现类,实现了interfaces指定的系列接口,执行代理对象的每个方法都会被替换执行InvocationHandler对象的invoke方法。

实际上,即使采用第一个方法获取了一个动态代理类之后,当程序需要通过该代理类,来创建对象时一样,需要传入一个InvocationHandler对象,也就是说,系统生成的每个代理对象都有一个与之关联的的InvocationHandler对象。
代码演示:
[/size][/color][/b]

package com.qin.aop;

/**
* 通用的模拟AOP
* 切面类,其方法可以在运行时被调入
*
* **/
public class DogUtils {

/**
*
* 第一个拦截器的方法
*
* **/
public void method1(){

System.out.println("=======模拟第一个通用的方法==========");

}


/**
*
* 第一个拦截器的方法
*
* **/
public void method2(){

System.out.println("=======模拟第二个通用的方法==========");

}



}



[b][color=olive][size=large]Dog接口,JDK动态代理只能给接口生成代理。[/size][/color][/b]
package com.qin.proxy;

/***
*
* 定义Dog接口
* */
public interface Dog {

/**
*
* 详细信息的方法
* **/
public void info();


/**
* 运行的方法
*
* */
public void run();





}


package com.qin.proxy.impl;

import com.qin.proxy.Dog;

/**
*
* 实现类
* **/
public class GunDog implements Dog {

@Override
public void info() {
System.out.println("我是一只猎狗! ");

}

@Override
public void run() {

System.out.println("我奔跑迅速!");

}





}



package com.qin.proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

import com.qin.aop.DogUtils;



/**
* 动态代理的实现自定义类
*
*
* **/
public class MyInvokationHandler implements InvocationHandler{

/*
* 需要被代理的对象
* **/
private Object obj;




public void setObj(Object obj) {
this.obj = obj;
}


/**
* 执行动态代理对象的所有方法时,
* 都会被替换成如下的invoke方法
*
* ***/
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
DogUtils du=new DogUtils();
//执行DogUtils对象中的method1方法
du.method1();
//以target作为主调来执行method方法
Object result=method.invoke(obj, args);
du.method2();
return result;
}





}



package com.qin.proxy;

import java.lang.reflect.Proxy;


/**
* 该对象为指定的target生成动态代理实例
*
* **/
public class MyProxyFactory {

public static Object getProxy(Object obj){

//创建一个MyInvokationHandler对象
MyInvokationHandler hadler=new MyInvokationHandler();

hadler.setObj(obj);
//创建并返回一个动态代理

return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), hadler);

}


}


[b][size=large]测试:[/size][/b]
package com.qin.test;

import com.qin.proxy.Dog;
import com.qin.proxy.MyProxyFactory;
import com.qin.proxy.impl.GunDog;

/**
*
* 测试驱动类
* **/
public class Test {




public static void main(String[] args) {
Dog target=new GunDog();

Dog dog=(Dog)MyProxyFactory.getProxy(target);

dog.info();
dog.run();


}

}


[b][size=large]结果输出如下:[/size][/b]

=======模拟第一个通用的方法==========
我是一只猎狗!
=======模拟第二个通用的方法==========
=======模拟第一个通用的方法==========
我奔跑迅速!
=======模拟第二个通用的方法==========
http://www.jmfq.cn/news/4827115.html

相关文章:

  • 怎么自己做网站的优化/爱站网挖掘关键词
  • 专注高密做网站哪家强/百度客服在哪里找
  • 怎么做网站的百度权重/电商网站策划
  • 有哪些网站做国外生意的/河南seo技术教程
  • 漳州网站建设多少钱/浅议网络营销论文
  • 创建全国文明城市工作总结/seo综合优化公司
  • wordpress 轻社交/曲靖seo
  • wordpress datebase back/手机网站怎么优化关键词
  • 小公司网站用什么服务器划算/今天时政新闻热点是什么
  • wordpress 帝国备份王/泸州网站seo
  • 贵阳做网站kuhugz/一个新手怎么去运营淘宝店铺
  • 给我一个可以在线观看片/seo算法优化
  • 收费网站建设视频教程免费下载/建站系统cms
  • 嘉兴 做网站 推广/市场营销方案范文5篇
  • 上海做外贸网站建设/上海百度公司地址
  • 写个网页多少钱/黑帽seo技术论坛
  • 做律师网站公司/微信营销案例
  • 汽车网站名称/百度企业网盘
  • 建设部门户网站/理发美发培训学校
  • 办一家建筑公司流程/seo chinaz
  • 网站上怎么做弹幕效果/软文案例
  • 网站域名续费多少钱/东莞网站推广运营公司
  • 专业网站制作公司排行/做一个网站要多少钱
  • 长沙网站托管哪家好/广州竞价托管代运营
  • 大连哪家网站技术开发公司好/厦门人才网官网登录
  • 东莞建网站平台/最新实时新闻
  • 网站建设的技术方案/软文案例大全300字
  • wordpress万网安装/网站优化排名怎么做
  • js网站下拉置顶代码/百度网盘网页版登录首页
  • 专业排名优化网站/海阳seo排名