请教一个问题?

请教一个问题?

老师,this是指InvocationHandler这个接口?也就是InvocationHandler实现类的实例?
接口实现类的实例究竟指的是什么呢?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
芝芝兰兰 2019-10-20 18:44:38

同学你好。

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,所以只要实现了这个接口的都可以接收。


如果解答了同学的疑问,望采纳~

祝学习愉快~

芝芝兰兰 2019-10-20 11:28:33

同学你好。this是指当前对象,也就是MyJdkProxy的实例。

由于Proxy.newProxyInstance方法的定义是

newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)

也就是说这个位置的参数应该是实现了InvocationHandler 接口的类的实例。所以让MyJdkProxy 实现InvocationHandler 接口。然后将当前类 MyJdkProxy 的实例,即 当前对象 this 传入。

如果解答了同学的疑问,望采纳~

祝学习愉快~

  • 提问者 精慕门618366 #1
    老师,视频中不是说this是一个接口吗,但是他又是这个类的对象也就是实现这个接口的实现类的实例,那么这个实例就代表接口吗?
    2019-10-20 15:48:46
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
SSM主流框架入门与综合项目实战2018版
  • 参与学习           人
  • 提交作业       205    份
  • 解答问题       4317    个

Java中非常实用的SSM整合开发内容,从Spring开始,到MyBaits的进阶内容,再到SpringMVC的应用,最后是SSM整合开发案例,逐步深入,助你成长为一名Java工程师!

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师