1. 动态代理实例是否会子类化目标类? Java文档表示,代理实例实现了“一组接口”,没有提到子类化,但是通过调试,我发现代理实例确实继承了目标类的属性。"一组接口"是什么意思?我能排除目标类实现的那些接口吗?
2. 我能在代理实例上调用目标类特定的方法吗?
3. 我认为动态代理是一个接口方法调用代理而不是目标类代理,对吗(我深受Hibernate代理对象概念的影响)?
1. 动态代理实例是否会子类化目标类? Java文档表示,代理实例实现了“一组接口”,没有提到子类化,但是通过调试,我发现代理实例确实继承了目标类的属性。"一组接口"是什么意思?我能排除目标类实现的那些接口吗?
2. 我能在代理实例上调用目标类特定的方法吗?
3. 我认为动态代理是一个接口方法调用代理而不是目标类代理,对吗(我深受Hibernate代理对象概念的影响)?
我想你误解了。每个传递给 getProxyClass() 的 Class
对象必须是接口的类对象,而不是具体类的类对象。所以,String.class
不是一个有效的参数,但 List.class
是。正如它所说的"接口数组中的所有 Class 对象必须表示接口,而不是类或原始类型"。因此,子类是无关紧要的。
不行(因为这里与类无关,只涉及接口)。如果您需要访问它们,添加一个接口即可。
正确。