2

假设我有这样的代码

public void init(){
    addMouseListener(this);
    addMouseMotionListener(this);
}

基于 JAVA 文档,

在方法或构造函数中,this 指的是当前对象,即正在调用其方法或构造函数的对象...

根据代码,我可以得出结论,“this”是指init()未调用方法的对象,addMouseListener()或者addMouseMotionListener()

是真的吗?

4

4 回答 4

11

this指当前对象,即具有 init 方法的对象,是的,以及您要添加 MouseListener 和 MouseMotionListener 的对象。它也是和 MouseMotionListener。你可能要求这个可怜的班级做得太多了。

我建议您不要让您的 GUI 或小程序类也实现侦听器接口,因为这会使您的代码难以调试和扩展。

于 2012-08-04T15:23:05.030 回答
3

不完全是。当你这样做

someFunction();

这和做的一样

this.someFunction();

因此,在您的示例中,您有一些对象既 TAKES 监听器又是监听器。本质上,您是在告诉对象听自己的声音。你正在做的

this.addMouseListener(this);

this当方法不合格时,会隐含初始值。

static方法也是如此。如果你有一个static void someStatic() { },任何时候你打电话someStatic();都是一样的MyClass.someStatic();

于 2012-08-04T15:23:33.133 回答
2

那是真实的。关键字“this”是指调用 init() 的对象实例,例如对象设置为 MouseListener 和 MouseMotionListener

于 2012-08-04T15:23:11.403 回答
2

关键字是对当前类实例的this引用,但是当你将它传递给 addMouseListener 时,你传递的是实现的接口引用,在这种情况下是MouseListener

于 2012-08-04T15:26:02.473 回答