2017-03-02 2 views
-2

次のコードでは、call()メソッド内にRunnableを作成するcallableを作成します。私の問題は、run()メソッドには決して到達しないということです(コードは実行されません)。なぜ、どのように修正するのか知っていますか?RunableがCallable内で実行されない

public static void main(String[] args) { 

    Callable<Object> c = new Callable<Object>() { 

     @Override 
     public Object call() throws Exception { 

      Runnable r = new Runnable() { 

       @Override 
       public void run() { 
        System.out.println("hi"); 

       } 
      }; 

      return null; 
     } 
    }; 

    try { 
     c.call(); 
    } catch (Exception e) { 

    } 
} 
+4

あなたは忘れてしまった 'r.run();' – Andremoniy

+3

さて、実際に実行メソッドを呼び出さないでください – kamehl23

答えて

1
Callable<Object> c = new Callable<Object>() { 

      @Override 
      public Object call() throws Exception { 

       Runnable r = new Runnable() { 

        @Override 
        public void run() { 
         System.out.println("hi"); 

        } 
       }; 
       r.run(); 
       return null; 
      } 
     }; 
     try { 
      c.call(); 

     } catch (Exception e) { 

     } 
+0

あなたの例がOPの例とどのように異なるかを説明するテキストを含めて、この回答を改善できます。 –

+0

ok私は今から – Friendassist

0

あなたはなぜ...

がすでに他の人によって説明知っていますか:あなたはRunnableインスタンスを作成するコードを書かれているが、あなたのコードは、インスタンスに何もしませんそれを作成した後。あなたのコードは直接run()メソッドを呼び出すのではなく、メソッドを呼び出す他のオブジェクトにコードを渡すこともありません。

...どのように修正するのですか?

これは、コードをにすることに応じて、になります。もしあなたが望むなら、 "hi"を印刷するプログラムを書く簡単な方法があります。

あなたは何かを学ぼうとしているように見えますが、あなたが何を学びたいか教えてくれていません。

関連する問題