public interface Subject
{
public boolean request();
}
这是抽象角色的公共接口 public class RealSubject implements Subject
{
public boolean request()
{
boolean b = false;
System.out.println(b);
return b;
}
}这是具体角色,被代理类import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class DynamicProxy implements InvocationHandler
{
Object obj;
public DynamicProxy(Object obj)
{
this.obj = obj;
}
public Object invoke(Object proxy, Method method, Object[] args)throws Throwable
{
System.out.println("before proxy:" + method);
Object object = method.invoke(obj, args);
//method.invoke(obj,args);
System.out.println("after proxy:" + method);
return object;
//return null;
}
}这是代理类import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;public class Client
{
public static void main(String[] args)
{
RealSubject real = new RealSubject();
InvocationHandler handler = new DynamicProxy(real);
Class<?> classType = handler.getClass();
Subject sub = (Subject)Proxy.newProxyInstance(classType.getClassLoader(), real.getClass().getInterfaces()
, handler);
sub.request(); }
}这是测试类
假如运行代理类中被注释掉的语句,在运行结束后产生NullPointerException;假如把公共接口中的那个方法返回值改为void就不会出现这样的情况,请大家帮帮忙这是什么情况。
解决方案 »
- java发邮件更改发送人地址?
- 用过spring rich client的进来看看这个问题
- 调了一天没有搞定,JDBC连接时出现“加载驱动器类时出现异常”
- 关于jtable选中问题!
- oracle817是不是支持可更新的resultset?
- 一个纯粹为提供包内共享函数的类,其构造函数应该被设计成什么样式?
- 老大们小菜提问关于局域网的问题?
- 请高手帮个忙....谢谢 了..... (求一个用JAVA做的一个面板的课程表..... 不、用太复杂就行) 在线等 ````````
- 一个java的小程序
- 关于overload和override方法的问题?
- 求解释几个题目
- javax.naming.NameNotFoundException: Name ds is not bound in this Context
//return null; 你返回null了啊,他要对结果进一步处理的,比如强转为你定义的返回类型,这时候就会报错啊
你返回void,就不需要进一步处理,那就不会报错了
这个应该是显而易见的吧