可以带参数运行吗?

2023-12-09

我需要一个“接受参数的可运行程序”,尽管我知道这样的可运行程序并不真正存在。

这可能表明我的应用程序设计存在根本缺陷和/或我疲惫的大脑中的精神障碍,所以我希望在这里找到一些关于如何完成类似以下事情的建议,without违反基本的面向对象原则:

  private Runnable mOneShotTask = new Runnable(String str) {
    public void run(String str) {
       someFunc(str);
    }
  };  

知道如何完成类似上述的事情吗?


自从我最初发布这篇文章以来已经快 9 年了,说实话,从那时起 Java 已经做了一些改进。我将在下面留下我原来的答案,但人们没有必要做其中的事情。 9 年前,在代码审查期间,我会质疑他们为什么这样做,也许会批准,也许不会。有了现代 lambda 表达式,如此高票数的答案推荐过时的方法(平心而论,一开始就可疑……)是不负责任的。在现代 Java 中,代码审查将立即被拒绝,这将是建议:

void foo(final String str) {
    Thread t = new Thread(() -> someFunc(str));
    t.start();
}

和以前一样,像以有意义的方式处理该线程这样的细节留给读者作为练习。但说白了,如果你害怕使用 lambda,那么你应该更害怕多线程系统。

原来的答案,只是因为:

您可以在方法中声明一个类

void Foo(String str) {
    class OneShotTask implements Runnable {
        String str;
        OneShotTask(String s) { str = s; }
        public void run() {
            someFunc(str);
        }
    }
    Thread t = new Thread(new OneShotTask(str));
    t.start();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可以带参数运行吗? 的相关文章

随机推荐