gpt4 book ai didi

java - 处理一个事件 : implement an interface or using inner class to handle the interface. 哪个更好

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:01:17 24 4
gpt4 key购买 nike

处理一个事件,有两种方式:

  1. 实现回调接口(interface)举例

    public class A implements View.OnClickListener {
    public void onClick(View v) {
    ....
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    ...
    aboutLayout = (LinearLayout) findViewById(R.id.aboutLayout);
    aboutLayout.setOnClickListener(this);
    }
    }
  2. 创建一个实现回调接口(interface)的内部类

    public class ActivityAbout  {
    private class ViewClickListener implements View.OnClickListener {
    public void onClick(View v) {
    ..
    }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    ...
    ViewClickListener listener = new ViewClickListener();
    aboutLayout = (LinearLayout) findViewById(R.id.aboutLayout);
    aboutLayout.setOnClickListener(listener);
    }
    }

哪个更好?

最佳答案

选择完全取决于您计划使用该类的方式,每种方法都是有效的并且有其相应的优点和缺点:

  • 方法 1 的编码速度很快,但将您限制为一个 onClick() 函数,这可能会或可能不会成为组织困惑。
  • 方法 2 允许您创建多个 onClick() 函数并在更合乎逻辑的方法中使用它们。

但是我想介绍方法三,匿名回调:

public class MyActivity extends Activity {
OnClickListener myClickListener1 = new OnClickListener() {
public void onClick(View v) {
..
}
}

OnClickListener myClickListener2 = new OnClickListener() {...}

@Override
protected void onCreate(Bundle savedInstanceState) {
...
view.setOnClickListener(myClickListener1);
}
}

请注意,与方法 2 不同,我没有创建自定义类。我会避免创建新的自定义类,除非您要添加更多功能、保留局部变量或以其他方式修改 OnClickListener 的基本功能。

关于java - 处理一个事件 : implement an interface or using inner class to handle the interface. 哪个更好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12342125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com