Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 匿名类编程约定与实现接口_Java_Android_Interface_Anonymous Class - Fatal编程技术网

Java 匿名类编程约定与实现接口

Java 匿名类编程约定与实现接口,java,android,interface,anonymous-class,Java,Android,Interface,Anonymous Class,从android开发的角度来看,当您在编程时,您更喜欢用哪种方式实现listener?或者您认为哪种方式最适合可读代码?我给出了两个关于这些内容的示例,但考虑更复杂的类,例如具有多个侦听器的类:) 第一个示例是匿名类: public class SenderReceiverActivity extends Activity { Button cancelButton; @Override protected void onCreate(Bundle savedInstanceState) {

从android开发的角度来看,当您在编程时,您更喜欢用哪种方式实现listener?或者您认为哪种方式最适合可读代码?我给出了两个关于这些内容的示例,但考虑更复杂的类,例如具有多个侦听器的类:)

第一个示例是匿名类:

public class SenderReceiverActivity extends Activity {

Button cancelButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sending);
    cancelButton = (Button) findViewById(R.id.button1);
    cancelButton.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {

        }
    });
}}
第二个示例是实现接口:

public class SenderReceiverActivity extends Activity implements OnClickListener {

Button cancelButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sending);
    cancelButton = (Button) findViewById(R.id.button1);
    cancelButton.setOnClickListener(this);
}

public void onClick(View v) {

}
}

我认为第二种方法也一样好

1-您可以处理多个视图在一个位置单击

2-它使代码更短,易于阅读

3-易于维护


4-如果您在项目中使用基本活动之类的概念,那么它也很有用。

如果您有单按钮,那么第一种方法是正确的,因为代码中没有任何复杂性,但是当
有多个按钮时,第二种方法更清晰,只需对多个按钮使用一个onClick方法,并使用v.getId()检查按钮的id


但是在功能上没有任何变化,两者都是相同的。

好吧,除了一个之外,两者之间并没有太大区别:在第二种情况下,您可以从类外访问
onClick(View v)
方法


如果对我来说,我更喜欢第一种方法,因为通常不会有多个组件在单击时同时具有相同的行为。

+1对于问得好的问题。然而,你应该知道这个网站上有很多类似的问题。我认为调用类似于系统的方法(我说的是android案例)不是一个好的做法。如果您需要显式地调用此类方法,那么应该有问题。然而,您的建议显示了实现接口的另一个方面。谢谢:)我没有说我会那样做。我只是说有这样的可能性=]而且,我认为在活动中实现接口也会显示出您第一眼看到的是哪个侦听器。