谁有java动态代理的例子,麻烦发给我看一下,现在对它相当的模糊,不知道它有什么用,有什么好处。。。
一个小的例子都行,只要有代表性就可以,谢谢了。。。liuhj0304@126.com先给到30分,不要嫌少啊,再补。。。。...
一个小的例子都行,只要有代表性就可以,谢谢了。。。
liuhj0304@126.com
先给到30分,不要嫌少啊,再补。。。。 展开
liuhj0304@126.com
先给到30分,不要嫌少啊,再补。。。。 展开
1个回答
展开全部
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class DynamicProxy implements InvocationHandler
{
private Object target;
public Object getProxyInstance(Object target)
{
this.target = target ;
Object o =Proxy.newProxyInstance(target.getClass().getClassLoader(),target.getClass().getInterfaces(), this);
return o;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
// TODO Auto-generated method stub
method.invoke(this.target, args);
return null;
}
}
上面这个是代理类,
下面这个是接口:
public interface Interface {
public abstract String say(String s);
}
下面这个是接口的实现类:
public class People implements Interface
{
private String name;
public People(String s)
{
this.name = s;
}
@Override
public String say(String s) {
// TODO Auto-generated method stub
System.out.println("my name is "+name+s);
return s;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
下面这个是测试类:
public class MainTest {
public static void main(String[] args)
{
People pl =new People("吴援飘");
/*ProxyClass pc = new ProxyClass(pl);
pc.say(",你真厉害!");*/
DynamicProxy dp = new DynamicProxy();
Interface it = (Interface)dp.getProxyInstance(pl);
it.say(",这个是动态代理,很牛B的。");
}
}
------------------------------------------------------------------------------------------------------------
学动态代理之前,先去看下java的代理模式。
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class DynamicProxy implements InvocationHandler
{
private Object target;
public Object getProxyInstance(Object target)
{
this.target = target ;
Object o =Proxy.newProxyInstance(target.getClass().getClassLoader(),target.getClass().getInterfaces(), this);
return o;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
// TODO Auto-generated method stub
method.invoke(this.target, args);
return null;
}
}
上面这个是代理类,
下面这个是接口:
public interface Interface {
public abstract String say(String s);
}
下面这个是接口的实现类:
public class People implements Interface
{
private String name;
public People(String s)
{
this.name = s;
}
@Override
public String say(String s) {
// TODO Auto-generated method stub
System.out.println("my name is "+name+s);
return s;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
下面这个是测试类:
public class MainTest {
public static void main(String[] args)
{
People pl =new People("吴援飘");
/*ProxyClass pc = new ProxyClass(pl);
pc.say(",你真厉害!");*/
DynamicProxy dp = new DynamicProxy();
Interface it = (Interface)dp.getProxyInstance(pl);
it.say(",这个是动态代理,很牛B的。");
}
}
------------------------------------------------------------------------------------------------------------
学动态代理之前,先去看下java的代理模式。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询