私は自分のプログラムを開発するために日食を使用しています。最初はこのプログラムを構築し続けるつもりはなかったので、すべてのクラスを1つのメインクラス内に作成しました。その後、テキストの壁になり、それらを別々のクラスに分割することにしました。
しかし、現在は、独自のクラスファイルにあるため、メインプログラムのフィールドにアクセスできないようです。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
}
}