java - 在不同的类中实现 ButtonListener 的最佳方法是什么?

标签 java

我知道创建监听器的 3 种方法:

1。匿名类型

 btn.addClickListener(new ButtonClickListener(){
   doSomething();
 })

2。类内部类型

btn.addClickListener(new MyButtonClickListener());
public MyButtonClickListener implements ButtonClickListener{}

3。外部类

与上面相同,但在另一个类中。

问题

如果我在类中有一些使用按钮的字段,并且我想用按钮做一些事情,这是最简洁的方法?

例如,我有 String a = "foo" 作为字段,当我单击按钮时,我想更改此字段。

  • 情况 1:我可以使用 MyClass.this.foo = "bar";
  • 情况 2:相同。
  • 案例 3:? (创建一个引用字段的自定义构造函数?)

最佳答案

If I have some fields in the class who use the button and I want to do something with buttons, which is the cleanest way?

一般来说,这取决于情况。如果您查看 sun/oracle 的 java 教程,您也会看到他们以不同的方式执行此操作。
甚至还有第四种可能性:通过GUI类实现接口(interface)。

根据我个人的经验,我认为可读性高于聪明性。这意味着我会坚持一种方法,并在所有情况下都使用这种一致的方法。只有真正有好的论据,我才会考虑改变风格。每个读者都对正在发生的事情抱有期望,并且期望得到实现。如果他们必须开始四处寻找或担心是否发生了其他事情(以及发生在哪里),这会使阅读和理解速度变慢。
这通常会导致我的匿名内部类。它们始终在 addListeners() 方法内设置。我做了一些检查,如果需要执行一些更严重的操作,我会从监听器内部调用一些其他(外部)类方法。

Case 1 (anonymous inner class): I can use MyClass.this.foo = "bar";

尝试一下。 (是的,你甚至可以调用 call foo = "bar";)

Case 2 (inner class): the same

尝试一下(与匿名内部类相同的情况)

Case 3: ? (Create a custom constructor with reference to the field?)

由于按值调用,这将不起作用。 (MyButtonClickListener(String foo) .. foo = "bar"仅更改本地 foo)。您可以传递对对象的引用并调用像 setField 这样的 getter。

关于java - 在不同的类中实现 ButtonListener 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14674505/

相关文章:

java - 线程和同步方法

java - java中反转字符串而不改变空格

java - 将字符串中的字符增加特定值

java - LwjglCanvas 与 JFrame 调整大小

Java 注解 javaArgs 和 LiteralArguments 已弃用

java - 使用 Java 进行身份验证的 HTTP 代理

java - 数据库函数引号内的 JDBI 绑定(bind)值

java - memcache/JCache 是否适用于云端点?

java - NeuroPH GPS 训练套件

java - 从头节点反向链表?