Java语法解释

时间:2015-03-05 20:03:14

标签: java syntax

我是Java的新手,我遇到了以下代码:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = new Button(this);
        button.setText("Touch That!");

        button.setOnClickListener( new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MainActivity.this.onButtonClick(v);
            }
        });

        RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.rootlayout);
        relativeLayout.addView(button);
    }

    public void onButtonClick(View view){
         //do something when button is clicked.
    }

}

我不理解语法,调用了View.OnClickListener()c'tor,然后是 {} 和overidding方法。 这种语法代表什么?

这个指的是哪个对象? 我猜是按钮。但如果我是对的,为什么要使用 MainActivity.this 而不是这个? (调用该方法的对象)

2 个答案:

答案 0 :(得分:3)

这是一个匿名类声明。这意味着你将动态地覆盖类中的一些方法。

看看这个arcticle:

http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html

关于第二个问题,MainActivity.this是指您当前所处活动的实例。如果您只调用this,则会引用实际对象。当您致电MainActivity.this时,您将获得您所在的MainActivity实例,即使创建了更多活动。看一下Android的活动生命周期。

What's the difference between this and Activity.this

希望它有所帮助。

答案 1 :(得分:0)

致电

new View.OnClickListener(){}

您正在创建一个实现OnClickListerner接口的对象,该接口要求您实现click方法。

如果我错了,有人可以纠正。