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”是“Thread”类型,而不是“SpawnRnn”

于 2013-02-17T20:05:09.417 回答
2

正如编译器所说,spawnRnnis of type Thread, not of type 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 的类型是 Thread 而不是 SpawnRnn。

于 2013-02-17T20:06:31.107 回答