0

私のコード:

 public class MyPanel extends JPanel {
   private Thread spawnRnn = new Thread(new SpawnRnn());

   public MyPanel() {
     spawnRnn.start();
   }

   public class SpawnRnn implements Runnable {
     public void loadData() {}
     public void run() {}
   }
   public class MainRnn implements Runnable {
     public void run() {
       spawnRnn.loadData(); //<--cannot find symbol. symbol: method loadData()
                            //location: variable spawnRnn of type Thread
     }
   }
}

エラーが発生する場所を指摘しました。その理由と解決方法は?

4

3 に答える 3

2

まあ、それは簡単なことです。「spawnRnn」は「SpawnRnn」ではなく「スレッド」タイプです

于 2013-02-17T20:05:09.417 に答える
2

コンパイラが言うように、spawnRnnタイプThreadではなくタイプSpawnRnnです...メソッドがありませんloadData。おそらく次のようなものが必要です。

public class MyPanel extends JPanel {
   private final Thread thread;
   private final SpawnRnn spawnRnn;

   public MyPanel() {
      spawnRnn = new SpawnRnn();
      thread = new Thread(spawnRnn);
      thread.start();
   }

   public class SpawnRnn implements Runnable {
     public void loadData() {}
     public void run() {}
   }

   public class MainRnn implements Runnable {
     public void run() {
       spawnRnn.loadData();
     }
   }
}

SpawnRnnこのようにして、スレッドの作成に使用されたインスタンスにアクセスできます。実際にthread変数が必要かどうか、またはコンストラクターでローカル変数を使用できるかどうかは不明です。

(また、変数を final にしたのは、そうすることができれば、コードの推論が容易になるという理由からです。)

于 2013-02-17T20:05:41.360 に答える
0

問題は、spawnRnn が SpawnRnn ではなく Thread 型であることです。

于 2013-02-17T20:06:31.107 に答える