无法从另一个 class 访问方法
Cant access methods from another class
我正在打电话 DataComparison()
public class SteganographyGUI {
...
DataComparison dataComp;
dataComp = new DataComparison();
}
public int getLSB(){
String x = fileChooser1.getSelectedFile().getAbsolutePath();
x = x.substring(x.length() - 10, x.length() - 9);
return Integer.parseInt(x);
}
当满足某些条件时。我的问题是,当我尝试使用 gui.getLSB()
访问 getLSB 时
public class DataComparison {
public static SteganographyGUI gui;
...
public DataComparison(){
lsb = gui.getLSB();
}
public static void main(String[] args) {
gui = new SteganographyGUI();
gui.setVisible(true);
}
出现错误 - Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
我该如何解决这个问题?
您正试图在您的 DataComparison class 中调用 getLSB(),但您没有给它提供您的 SteganographyGUI class 的引用。所以更改以下行:
DataComparison dataComp;
dataComp = new DataComparison();
至:
DataComparison dataComp;
dataComp = new DataComparison(this);
并更改构造函数:
public DataComparison(SteganographyGUI guiRef){
gui = guiRef;
}
您在代码中进行循环调用。为 main 尝试另一个 class 并按顺序调用它的方法:
class 1: `public class SteganographyGUI {...}`
class 2: `public class DataComparison {...}
class 3:
`public class XXXX {
public static void main(String[] args) {
gui = new SteganographyGUI();
gui.setVisible(true);
}
}`
I have helped :)
当您尝试启动静态“gui”变量时
gui = new SteganographyGUI();
你执行 SteganographyGUI class 构造函数(可能)调用 DataComparison class 构造函数
public DataComparison(){
lsb = gui.getLSB();
}
使用尚未设置的静态“gui”变量。这就是你得到 "java.lang.NullPointerException".
的原因
是的,我知道 "the exception message is misleading" :)
我正在打电话 DataComparison()
public class SteganographyGUI {
...
DataComparison dataComp;
dataComp = new DataComparison();
}
public int getLSB(){
String x = fileChooser1.getSelectedFile().getAbsolutePath();
x = x.substring(x.length() - 10, x.length() - 9);
return Integer.parseInt(x);
}
当满足某些条件时。我的问题是,当我尝试使用 gui.getLSB()
public class DataComparison {
public static SteganographyGUI gui;
...
public DataComparison(){
lsb = gui.getLSB();
}
public static void main(String[] args) {
gui = new SteganographyGUI();
gui.setVisible(true);
}
出现错误 - Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
我该如何解决这个问题?
您正试图在您的 DataComparison class 中调用 getLSB(),但您没有给它提供您的 SteganographyGUI class 的引用。所以更改以下行:
DataComparison dataComp;
dataComp = new DataComparison();
至:
DataComparison dataComp;
dataComp = new DataComparison(this);
并更改构造函数:
public DataComparison(SteganographyGUI guiRef){
gui = guiRef;
}
您在代码中进行循环调用。为 main 尝试另一个 class 并按顺序调用它的方法:
class 1: `public class SteganographyGUI {...}`
class 2: `public class DataComparison {...}
class 3:
`public class XXXX {
public static void main(String[] args) {
gui = new SteganographyGUI();
gui.setVisible(true);
}
}`
I have helped :)
当您尝试启动静态“gui”变量时
gui = new SteganographyGUI();
你执行 SteganographyGUI class 构造函数(可能)调用 DataComparison class 构造函数
public DataComparison(){
lsb = gui.getLSB();
}
使用尚未设置的静态“gui”变量。这就是你得到 "java.lang.NullPointerException".
的原因是的,我知道 "the exception message is misleading" :)