需要解释传递给我方法的'this'

时间:2012-02-02 09:53:16

标签: java interface

如果我的课程具有如下所示的界面定义;

public class FirstClass {

  private static onDragListener listener  

  public interface onDragListener{
      void doSomething();
  }

  //a static method to set on my drag listener
  public static void setOnDragListener(onDragListener listener){
           FirstClass.listener = listener
  }

}

如上所述,在侦听器上设置了setOnDragListener(onDragListener listener)静态方法。

然后,还有另一个类实现了第一个类中定义的接口,如下所示:

public class SecondClass implements onDragListener{
    public void initialize(){
          FirstClass.setOnDragListener(this); //my question is here about 'this'. 
    }
}

我的问题是为什么我可以使用this作为参数传递给上面FirstClass.setOnDragListener(this);方法中的initialize()

我的意思是setOnDragListener(onDragListener listener)期望传入onDragListener类型参数,第二类this方法中的initialize是否意味着接口的实际实现或我该怎么理解呢?

4 个答案:

答案 0 :(得分:3)

继承是is-a关系。

SecondClass是一个onDragListener

thisSecondClass

Ergo,thisonDragListener

答案 1 :(得分:0)

在这种情况下,您将引用将实现onDragListener的对象本身。

答案 2 :(得分:0)

setOnDragListener()期望将onDragListener接口作为参数传递。 SecondClass实现了onDragListener界面,因此您可以将this实例从SecondClass实例传递到FirstClass.setOnDragListener(),因为this实现了onDragListener < / p>

答案 3 :(得分:0)

当您的SecondClass实现onDragListener接口时,它可以在任何需要onDragListener的地方使用,因为它是onDragListener。

对FirstClass.setOnDragListener(this)的调用中的'this'是SecondClass的当前实例,它是一个onDragListener。