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

java动态代理

 
动态代理是指客户通过代理类来调用其它对象的方法
动态代理使用场合:

远程方法调用(RMI)

 
1.创建一个实现接口InvocationHandler的类,它必须实现invoke方法
2.创建被代理的类以及接口
3.通过Proxy的静态方法
newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h) 创建一个代理
4.通过代理调用方法
 
参见程序VectorProxy.java
 
package com.langsin.dynamicproxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.List;
import java.util.Vector;
public class VectorProxy implements InvocationHandler
{
private Object proxyobj;
public VectorProxy(Object obj)
{
proxyobj = obj;
}
public static Object factory(Object obj)
{
Class<?> cls = obj.getClass();
return Proxy.newProxyInstance(cls.getClassLoader(),
cls.getInterfaces(), new VectorProxy(obj));
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable
{
System.out.println("before calling " + method);
if (args != null)
{
for (int i = 0; i < args.length; i++)
{
System.out.println(args[i] + "");
}
}
Object object = method.invoke(proxyobj, args);
System.out.println("after calling " + method);
return object;
}
@SuppressWarnings("unchecked")
public static void main(String[] args)
{
List<String> v = (List<String>) factory(new Vector<String>(10));
v.add("New");
v.add("York");
System.out.println(v);
v.remove(0);
System.out.println(v);
}
}

参见程序Foo.java
参见程序FooImpl.java
参见程序FooImpl2.java
参见程序CommonInvocationHandler.java
参见程序Demo.java
package com.langsin.dynamicproxy;
public interface Foo
{
void doAction();
}
package com.langsin.dynamicproxy;
public class FooImpl implements Foo
{
public FooImpl()
{
}
public void doAction()
{
System.out.println("in FooImp1.doActio


相关文档:

JAVA笔记(三)数据结构

动态内存分配
创建和维护动态数据结构要求进行动态内存分配,即程序能够在执行时获得更多的内存空间来放新结点,并在不需要这些内存时释放他们。
数据列表可以用数据进行存储,但是用链表存储有几个好处。在数据结构要表示的数据元素的数目无法预先确定的情况下,链表能够提供更合理的空间分配。链表是动态的,所以其长度 ......

java程序~天数


//输入某年某月某天,输出这一天是这一年的第几天
public class DaySum {
 public static void main(String[] args)
 {
  date da=new date();
  System.out.println(da.count(2008,12,31));
 }
 
}
class date
{
 int count(int  year,int month,int day) ......

Amazon发布新的Java SDK for Amazon Web Services

 
今年3月Amazon发布
了新的Java AWS
SDK
,旨在简化Amazon EC2上的Java应用开发。
Amazon EC2是个私有的Web Services,提供了云环境下的弹性计算能力。AWS SDK旨在简化网络规模(web-scale)下的计算。AWS Toolkit for
Eclipse
自动化了开发周期的大多数步骤,比如Amazon集群上的部署、调试、实例加载以及网 ......

Java文件操作实例


/*
程序功能:将ecoli(1).txt分割,其中分割的分割符是>
分割的文件名是>gi|????|,"???"表示一段数字,用数字做子文件名
文件以字符"!"结尾
程序员:xianglinyan
*/
import java.io.*;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
impo ......

为什么大多数大型网站不是用Java写的?

作为一个Java程序员,我们常常会颇感自豪地说:金融行业的大系统一般都是用Java写的。有太多理由让我们相信,Java在企业级应用这块,起着举足轻重的作用。然而,事实果真如此吗?金融行业或许是那样,可是像Google、Amazon这样的大型网站呢?面对这样的疑问,在分布式应用、CORBA、JINI、J2EE、网格和SOA领域,有着10多年经 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号