Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

clarification of "this" keyword in Java

Tags:

java

this

I have this code copied from Android developers website:

public class ExampleActivity extends Activity implements OnClickListener {
    protected void onCreate(Bundle savedValues) {
        ...
        Button button = (Button)findViewById(R.id.corky);
        button.setOnClickListener(this);
    }

    // Implement the OnClickListener callback
    public void onClick(View v) {
        // do something when the button is clicked
    }
    ...
}

I am wondering what exactly "this" keyword refers to? Does it refer to the class "ExampleActivity"? And in general how to find what "this" refers to?

like image 711
TJ1 Avatar asked Feb 23 '23 16:02

TJ1


1 Answers

It refers to the instance of ExampleActivity on which onCreate() has been called.

In general, from the Java Language Specification, 15.8.3:

The keyword this may be used only in the body of an instance method, instance initializer or constructor, or in the initializer of an instance variable of a class. If it appears anywhere else, a compile-time error occurs.

When used as a primary expression, the keyword this denotes a value that is a reference to the object for which the instance method was invoked (§15.12), or to the object being constructed. The type of this is the class C within which the keyword this occurs. At run time, the class of the actual object referred to may be the class C or any subclass of C.

like image 181
Andy Thomas Avatar answered Mar 08 '23 15:03

Andy Thomas