2017-04-25 11 views
1

Java 8を使用して次のコード(特にpublic void run()メソッド)をラムダに変換するにはどうすればよいですか?匿名の内部メソッドをJavaのラムダに変換する8

しようとしました
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がエラーを投げ続ける...

+6

を行うことができます '新しいRunnable'を削除します。 –

+0

ところで:ラムダを使うことができるという理由だけで、それらを使う必要はありません。私はメソッドハンドルを使うほうがはるかに読みやすくなっています。ラムダが2行より長い場合は、一般的には良い考えです。 – eckes

答えて

8

単にnew Runnableを削除:

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

あなたにその身体を引き出す検討する必要があります代わりにメソッドリファレンスを使用する:

大きなラムダボディーは特に読めるものではありません。あなたはそれがインライン化したい場合

0

こんにちは、あなたはこの

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(); 
      } 
     } 
    }); 
関連する問題