1

私はJava/Androidが初めてです。addActionListener(this) の「this」がわかりません。私は多くの本やフォーラムを読みましたが、まだ次のことを混乱させています。

誰かが説明します:「これ」は現在のオブジェクトへの参照です」

イベント ハンドラー クラスのインスタンスをリスナーとして 1 つ以上のコンポーネントに登録します。someComponent.addActionListener(instanceofMyClass);

わかりました、それはクラスのオブジェクトです。

ただし、誰かが説明します。「これ」は、実装およびインスタンス化された ActionListener を表し、たまたまあなたのクラスです。

したがって、「this」はクラスのオブジェクトであり、「クラス」でもあります。これは私が理解していないものです。

誰かが私に明確に説明してくれませんか。ありがとう!

4

4 に答える 4

2

Thisクラスではなく、常に現在のオブジェクトを参照します。オブジェクトを意味するときに、クラスを間違って言うことがあります。それだけです。

于 2013-10-13T02:39:05.773 に答える
2

Javaはメソッドを使用してオブジェクトを変更するため、「this」は現在のオブジェクトを指します。したがって、Activity で「this」を呼び出すと、メソッドに何か変更を加えることになります。

あなたのコード「someComponent.addActionListener(instanceofMyClass);」まったく同じことをしています。オブジェクト「someComponent」を取得し、メソッド「addActionListener」を使用しています。次に、ActionListener はどこでリスナー コードを取得するのかを考えます。あなたは、"instanceofMyClass" から呼び出したいと述べていますが、これは "this" と交換することができます。

ここでコードを使用した別の説明を見つけることができます: Java での「これ」の意味は何ですか?

于 2013-10-13T02:40:25.560 に答える
1

あなたの場合、「これ」は「現在のオブジェクトへの参照」と「ActionListenerインターフェースを実装する実装」の両方です。これは、囲んでいるクラス ("this" が待機している) がインターフェイス ActionListener を実装する必要があることを意味します。そのため、someComponent がクリック (または他のアクション) されると、囲んでいるクラスが呼び出されてイベントが処理されます。

以下のコードを参照して、アイデアを得ることができます。「this」は、ActionListener を実装する YourClass のインスタンスを表します。

public YourClass implements ActionListener
{
  private someComponent;
  public YourClass ()
   {
   someComponent = new Component();
   someComponent.addActionListener(this);
   }

  public void actionPerformed()
  {
    //add code to process the event
  }
}
于 2013-10-13T02:47:34.270 に答える