我是编程新手,我在android中有非常基础的知识。正如我在Java中了解到的那样,无法实例化接口(interface),并且new是Java中指示创建实例的关键字。我在Android中遇到以下代码:

public class MyActivity extends Activity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);

    setContentView(R.layout.mylayout);
    findViewById(R.id.button1).setOnClickListener(mButton1_OnClickListener);
  }

  //On click listener for button1
  final OnClickListener mButton1_OnClickListener = new OnClickListener() {
    public void onClick(final View v) {
        //Inform the user the button has been clicked
        Toast.makeText(this, "Button1 clicked.", Toast.LENGTH_SHORT).show();
    }
  };
}

上面的代码OnClickListener是一个公共(public)接口(interface),而onClick(final View v)是一个抽象方法,这是我的问题:OnClickListener是一个接口(interface),在上面的示例中如何使用new关键字创建它的实例?

最佳答案

在这里,您没有实例化由Anonymous内部类执行的接口(interface)。您没有在创建接口(interface)的对象。您正在为Anonymous类创建此对象,而该类将在下一步在{Anonymous内部类}中创建。想知道更多细节,您必须通过Anonymous内部类。

在以下链接中查看:

http://c2.com/cgi/wiki?AnonymousInnerClass

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

关于java - Android中的OnClickListener界面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20780261/

10-09 13:24