有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java 8中将匿名内部方法转换为Lambda

如何使用Java 8将以下代码(特别是public void run()方法)转换为lambda

public class SampleApp {

    public static void main(String[] args) {
        Thread t1 = new Thread(new Runnable() {

            @Override
            public void run() {
                for (int i = 0; i < 10; i++) {
                    System.out.println("Hello " + i);
                    try {
                        Thread.sleep(100);
                    }
                    catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        });

        t1.start();
    }
}

尝试过:

Thread t1 = new Thread(new Runnable() -> {

    for (int i = 0; i < 10; i++) {
        System.out.println("Hello " + i);
        try {
            Thread.sleep(100);
        }
        catch (InterruptedException e) {
            e.printStackTrace();
        }
    };

);

但Eclipse不断抛出错误


共 (2) 个答案

  1. # 1 楼答案

    嗨,如果你想在线,你可以这样做

        final Thread t1 = new Thread(()->{
            for (int i = 0; i < 10; i++) {
                System.out.println("Hello " + i);
                try { Thread.sleep(100); }
                catch (final InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
    
  2. # 2 楼答案

    只需删除new Runnable

    Thread t1 = new Thread(() -> { /* body */ });
    

    您可能想考虑将该实体拉入“真实”的方法中,并使用方法引用代替:

    static void doSomething() { /* body */ }
    
    public static void main(String[] args) {
      Thread t1 = new Thread(SampleApp::doSomething);
    }
    

    大的lambda主体不是特别可读