我的代码:
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
}
}
}
我指出了发生错误的地方。是什么原因以及如何解决?
答案 0 :(得分:2)
嗯,这很简单。 “spawnRnn”的类型为“Thread”,而不是“SpawnRnn”
答案 1 :(得分: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
变量,或者你是否可以在构造函数中使用局部变量。
(此外,我已经将变量设为最终,理由是当可以这样做时,它会使代码更易于推理。)
答案 2 :(得分:0)
问题是spawnRnn的类型是Thread not SpawnRnn。