如何将一行代码抽象为变量

时间:2016-11-08 22:36:40

标签: java

我想在另一个方法中运行一行代码。具体来说,我想采用一行代码 x 并在新线程中运行它。

这是我的伪代码

LineOfCode line;
...
new NewThread(line).run()

这是NewThread

的伪代码
public class NewThread {

    LineOfCode line;

    NewThread(LineOfCode line){
        this.line = line;
    }

    public void run(){

        Thread thread = new Thread() {
            @Override
            public void run() {

                line.execute();
            }
        };

        thread.start();
    }
}

如何将一行代码抽象为变量?

可能是一个愚蠢的问题,但无法想到明显的解决方案。

1 个答案:

答案 0 :(得分:4)

在Java 8+中,您可以使用lambda expression

Runnable line = () -> { System.out.println("I am doing something"); };

(感谢JoopEggen在评论中提供此内容)。

在以前的版本中,您需要明确地创建Runnable

Runnable line = new Runnable() {
  @Override public void run() {
    System.out.println("I am doing something");
  }
};

您可以将其传递给MyThread,然后调用run()方法。

实际上,您根本不需要MyThread:您可以这样做:

new Thread(line).start();

它运行Runnable:这是创建新线程的首选方式(而不是直接子类化)。