请教一个问题?
老师,this是指InvocationHandler这个接口?也就是InvocationHandler实现类的实例?
接口实现类的实例究竟指的是什么呢?
正在回答 回答被采纳积分+1
同学你好。
1、首先明确接口和实现类的关系。一个接口可以有多个实现类,比如有一个接口Animal,定义了吃喝睡三个抽象方法。有两个实现类People,和Monkey两个实现类。人类和猴子的吃喝睡的习性是不一样的,所以方法的实现也是不同的。但他们的对象都可以使用Animal声明,因为人类和猴子都是动物。
Animal animal1 = new People(); Animal animal2 = new Monkey();
同样如果有一个方法需要传入的参数声明为了Animal ,那么无论是People还是Monkey的实例都可以接受。
public int calcAge(Animal animal){
...
}
calcAge(animal1);
calcAge(animal2);2、视频中原话是“第三个参数是一个接口,是InvocationHandler那个接口”这句话并没有错。
接口本身是没有办法实例对象的,也就是不能 new 接口名() 这么使用。
只能有一个类去实现这个接口,然后将接口的实现类的实例传递过去。因为接受的参数声明的是InvocationHandler,所以只要实现了这个接口的都可以接收。
如果解答了同学的疑问,望采纳~
祝学习愉快~
同学你好。this是指当前对象,也就是MyJdkProxy的实例。
由于Proxy.newProxyInstance方法的定义是
newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)
也就是说这个位置的参数应该是实现了InvocationHandler 接口的类的实例。所以让MyJdkProxy 实现InvocationHandler 接口。然后将当前类 MyJdkProxy 的实例,即 当前对象 this 传入。
如果解答了同学的疑问,望采纳~
祝学习愉快~
- 参与学习 人
- 提交作业 205 份
- 解答问题 4317 个
Java中非常实用的SSM整合开发内容,从Spring开始,到MyBaits的进阶内容,再到SpringMVC的应用,最后是SSM整合开发案例,逐步深入,助你成长为一名Java工程师!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星