假设我有这样的代码
public void init(){
addMouseListener(this);
addMouseMotionListener(this);
}
基于 JAVA 文档,
在方法或构造函数中,this 指的是当前对象,即正在调用其方法或构造函数的对象...
根据代码,我可以得出结论,“this”是指init()
未调用方法的对象,addMouseListener()
或者addMouseMotionListener()
是真的吗?
this
指当前对象,即具有 init 方法的对象,是的,以及您要添加 MouseListener 和 MouseMotionListener 的对象。它也是和 MouseMotionListener。你可能要求这个可怜的班级做得太多了。
我建议您不要让您的 GUI 或小程序类也实现侦听器接口,因为这会使您的代码难以调试和扩展。
不完全是。当你这样做
someFunction();
这和做的一样
this.someFunction();
因此,在您的示例中,您有一些对象既 TAKES 监听器又是监听器。本质上,您是在告诉对象听自己的声音。你正在做的
this.addMouseListener(this);
this
当方法不合格时,会隐含初始值。
static
方法也是如此。如果你有一个static void someStatic() { }
,任何时候你打电话someStatic();
都是一样的MyClass.someStatic();
那是真实的。关键字“this”是指调用 init() 的对象实例,例如对象设置为 MouseListener 和 MouseMotionListener
关键字是对当前类实例的this
引用,但是当你将它传递给 addMouseListener 时,你传递的是实现的接口引用,在这种情况下是MouseListener。