易截截图软件、单文件、免安装、纯绿色、仅160KB

java动态代理

定义动态代理类DynamicProxy
package com.zte.adc.common;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class DynamicProxy implements InvocationHandler {
 private Object object;
 // 绑定关系,也就是关联到哪个接口(与具体的实现类绑定)的哪些方法将被调用时,执行invoke方法。
 // Proxy.newProxyInstance的第三个参数是表明这些被拦截的方法执行时需要执行哪个InvocationHandler的invoke方法
 public Object bindRelation(Object object) {
  this.object = object;
  return Proxy.newProxyInstance(object.getClass().getClassLoader(),
    object.getClass().getInterfaces(), this);
 }
 // 拦截关联的这个实现类的方法被调用时将被执行,只要是代理的类执行方法 首先经过invoke方法
 public Object invoke(Object proxy, Method method, Object[] args)
   throws Throwable {
  if ("queryForList".equals(method.getName()) && args.length == 4) {
   args[2] = (Integer) args[2] - 1;
  }
  Object result = method.invoke(object, args);
  return result;
 }
}
获得动态代理的代理对象 注意动态代理返回的对象必须是被代理对象的接口
 public SqlMapClientTemplate sqlTemplate1 = this.getSqlMapClientTemplate();
 public SqlMapClientOperations sqlTemplate=null;//这里1
 private DynamicProxy dp = new DynamicProxy();
 {
  sqlTemplate= (SqlMapClientOperations)dp.bindRelation(sqlTemplate1);
 }
 
 public BaseSqlMapDao() {
 }
如果在 “这里1”中用的不是SqlMapClientTemplate 的借口 而是直接用的SqlMapClientTemplate  那么
就会抛出异常
 
动态代理的原理就是通过动态代理类DynamicProxy 生成了一个新的对象 Proxy对象
该新对象继承的接口就是原对象的接口,产生的新对象并不是源对象的实例 而是产生的代理对象的实例


相关文档:

java collection接口


1、Collection 和 Collections的区别。
Collections是个java.util下的类,它包含有各种有关java集合操作的静态方法。 
Collection是个java.util下的接口,它是各种java集合结构的父接口
2、List, Set, Map是否继承自Collection接口? List,Set是 Map不是
3、ArrayList和Vector的区别。
(1).同步性:Vector是线程 ......

Java常碰面试题

1、jsp和servlet的区别、共同点、各自应用的范围??
JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。JSP编译后是“类servlet”。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。J ......

java解析xml的具体流程

java 代码
import javax.xml.parsers.DocumentBuilder;   
import javax.xml.parsers.DocumentBuilderFactory;   
  
import org.w3c.dom.Document;   
import org.w3c.dom.Element;   
import org.w3c.dom.NodeList;    ......

java知识点

1.  抽象
抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。
2.  继承
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确 ......

FLASH安全沙箱服务器端程序代码(跨平台,C++/JAVA)

Main.cpp  (Win/*nix)
#include "FlexSecurityBox.h"
int main(int argc, char ** argv) {

char * address;
short port;
if (argc == 2)
{
address = "0.0.0.0";
port = atoi(argv[1]);
} else if (argc == 3)
{
address = argv[1];
port = atoi(argv[2]);
} else
{
printf("Y ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号