答案如下: 为什么Proxy.newProxyInstance(...)返回的代理对象显示值为null.因为代理对象的值长啥样是由InvocationHandler的实现类(即这里的参数h)中的invoke(...)方法的返回值决定. lz在当时debug时, invoke()方法return null, 所以, 这里会显示null. 调试窗口value栏的 $Proxy0.这是因为Java底层通过反射动态生成了一个类, 类名恰好就是: com.sun.proxy.$Proxy0, 并且实现了接口: 参数interfaces决定的接口. 这样, 调试时, value栏自然显示: $Proxy0了, $符号只是名字的一部分.
答案如下:
Proxy.newProxyInstance(...)
返回的代理对象显示值为null
.因为代理对象的值长啥样是由
InvocationHandler
的实现类(即这里的参数h
)中的invoke(...)
方法的返回值决定. lz在当时debug时,invoke()
方法return null
, 所以, 这里会显示null
.这是因为Java底层通过反射动态生成了一个类, 类名恰好就是:
com.sun.proxy.$Proxy0
, 并且实现了接口: 参数interfaces
决定的接口.这样, 调试时, value栏自然显示:
$Proxy0
了,$
符号只是名字的一部分.