我正在使用 eclipse 来开发我的程序。最初我不认为我会继续构建这个程序,所以我在一个主类中制作了所有类,然后它变成了一堵文字墙,所以我决定将它们分成单独的类。
但是现在他们似乎无法访问主程序中的字段,因为它们位于自己的类文件中。我是否需要添加一些修饰符,例如 C++ 的朋友类?
我在显示错误的行上收到 NullPointerException。我也很困惑,因为在 IDE 中编写该行时,它会自动完成说我可以猜测“看到”调用 a.doSomething() 的选项,但是在运行它时,它认为它是 null .
示例代码:(这是我遇到的错误的表示,由于它太大,我无法发布整个代码)
// Suppose AObject is an object that does something and causes no errors.
// BEFORE SPLITING
public class myApp
{
static myApp app = null;
AObject a = null;
public static void main(String[] args)
{
a = new AObject();
app = new CLUtilCompact();
}
public myApp()
{
EventQueue.invokeLater
(
new Runnable()
{
public void run()
{
JFrame mainscreen = new JFrame();
myPanel myP = new myPanel();
mainscreen.add(myP);
mainscreen.setVisible(true);
}
};
)
}
public class myPanel
{
public myPanel()
{
a.doSomething(); // Works fine
}
}
}
// AFTER SPLIT TO CLASS FILES
public class myApp
{
static myApp app = null;
AObject a = null;
public static void main(String[] args)
{
a = new AObject();
app = new CLUtilCompact();
}
public myApp()
{
EventQueue.invokeLater
(
new Runnable()
{
public void run()
{
JFrame mainscreen = new JFrame();
myPanel myP = new myPanel(this);
mainscreen.add(myP);
mainscreen.setVisible(true);
}
};
)
}
}
// SEPERATE CLASS
public class myPanel
{
myApp theApp = null;
public myPanel(myApp arg)
{
theApp = arg;
theApp.a.doSomething(); // Error
}
}