java - 根据另一个类中的选项修改一个类的操作?

标签 java

这是一个关于风格的问题。对于这种情况,最干净的解决方案是什么:

我有一个 Runnable 类:

class R implements Runnable {
  public void run(){
    System.out.print("hello")
  }
}

另一个类像这样启动这个类:

Thread t = new Thread(new R());
t.start;

我的问题是,如果我需要运行来做一些更不同的事情,具体取决于启动线程的类中选择的单选按钮,将其传递给 Runnable 类的最佳方法是什么?

我应该创建一个构造函数并添加一个 boolean 女巫操作来执行吗?或者在运行线程之前创建一个公共(public) boolean 值并将其设置为 true false?或者我应该在 R 类中定义一个具有不同操作的枚举并将其传递?或者其他方式?

最佳答案

我同意最好的方法是让 Runnable 的构造函数接受执行所需的任何参数。例如:

class R implements Runnable {

  private final boolean myBool;

  public R(boolean myBool) {
    this.myBool = myBool;
  }

  public void run(){
    if (myBool) {
      System.out.print("hello");
    } else {
      System.out.print("goodbye");
    }
  }
}

一般来说,创建公共(public)全局变量(您提到的另一种选择)是不好的做法。上面列出的方法保证了封装性;只有需要了解值(value)的人才知道它。这可以确保当您的系统变得更加复杂时,没有其他类会扰乱您的值:-)

关于java - 根据另一个类中的选项修改一个类的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27205266/

相关文章:

java - 未找到 Base64 apache.commons.encodeBase64 符号

java - 玩家角色移动错误 LibGDX RPG

java - 以m_开头的成员变量命名符合javabean风格?

java - Spring Boot应用程序(特定于配置文件).properties返回null

java - Sonar 错误条件不应无条件评估为 "TRUE"或 "FALSE"

java - Arrays.asList() 无法正常工作?

java - SOAP 服务 - 测量响应时间

java - BitSet.nextClearBit 做什么,如何检查 false

java - 如何将大量传感器数据收集到文件而不是内存中

java - Eclipse Java 错误 : This selection cannot be launched and there are no recent launches