Java 在内部类中找不到方法
我的代码:Java 在内部类中找不到方法,java,Java,我的代码: 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 r
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
}
}
}
公共类MyPanel扩展了JPanel{
私有线程spawrnn=新线程(new spawrnn());
公共事务委员会(){
spawrnn.start();
}
公共类spawrnn实现可运行{
public void loadData(){}
public void run(){}
}
公共类mairnn实现可运行{
公开募捐{
spawnRnn.loadData();//这很简单。“spawnRnn”的类型是“线程”,而不是“spawnRnn”这很简单。“spawnRnn”的类型是“线程”,而不是“spawnRnn”正如编译器所说,spawrnn
属于Thread
类型,而不是spawrnn
类型……它没有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();
}
}
}
通过这种方式,您可以访问用于创建线程的spawrnn
实例。不清楚您是否确实需要thread
变量,或者是否可以在构造函数中使用局部变量
(同时,我将变量设置为final,因为当您可以这样做时,它会使代码更容易推理。)正如编译器所说,spawrnn
是类型Thread
,而不是类型spawrnn
。它没有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();
}
}
}
通过这种方式,您可以访问用于创建线程的spawrnn
实例。不清楚您是否确实需要thread
变量,或者是否可以在构造函数中使用局部变量
(另外,我将变量设置为final,因为当您可以这样做时,它使代码更容易推理。)问题是,spawnRnn的类型为Thread而不是spawnRnn。问题是,spawnRnn的类型为Thread而不是spawnRnn。我也尝试过这样做:private Runnable spawnRnn=new spawRNN()而且SOESN也不起作用。只是显示了另一个错误编辑:啊,它应该是不可运行的…我的mistake@user2080377:同样,在这种情况下,spawrnn
不会有一个名为loadData
-只是run()
。我还尝试了这样做:private Runnable spawrnn=new spawrnn()而且SOESN也不起作用。只是显示了另一个错误编辑:啊,它应该是不可运行的…我的mistake@user2080377:同样,在这种情况下,spawrnn
不会有名为loadData
的成员-只要run()
。