java动态代理的基础问题
下面是代理类的class中的add(object):
public final boolean add(Object paramObject)
throws
{
try
{
return ((Boolean)this.h.invoke(this, m3, new Object[] { paramObject })).booleanValue();
}
catch (Error|RuntimeException localError)
{
throw localError;
}
catch (Throwable localThrowable)
{
throw new UndeclaredThrowableException(localThrowable);
}
}
' return ((Boolean)this.h.invoke(this, m3, new Object[] { paramObject })).booleanValue();
就是调用VectorProxy.invoke方法,前面有一个强转换,所以你返回null就会有问题,返回string,就是java.lang.String cannot be cast to java.lang.Boolean'
下面我们看看add(index, element)这个方法
public final void add(int paramInt, Object paramObject)
throws
{
try
{
this.h.invoke(this, m4, new Object[] { Integer.valueOf(paramInt), paramObject });
return;
}
catch (Error|RuntimeException localError)
{
throw localError;
}
catch (Throwable localThrowable)
{
throw new UndeclaredThrowableException(localThrowable);
}
}
这个方法没有返回值,所以你return null或者return 'xxx',都没有问题。
赞1
踩0