main()の中でクラスやメソッドを呼び出す際の注意事項

C言語と同様、Javaアプリケーションを作成する場合、main()でプログラムは始まります。しかしながら、C言語との違いで最初戸惑うことがあります。例えば次のようなプログラムはエラーになります。

 

public class Application1 {

int i;

 

public void test(int i) {

     System.out.println(i);

}

 

public static void main(String[] args) {

     i = 10;

     test(i);

}

}

 

staticであるmain()からは、staticでない関数や変数を呼ぶことはできません。つまり、もし、i とか test 等を定義して利用するならば、それらは static でなければならないのです。これは困りますね。こういう場合は、下記のようにしたらいいんです。


public class Application1 {

int i;

 

// mainを代役する関数を定義し、その中で関数を呼ぶ

public void submain() {

     i = 10;

     test(i);

}

 

// 使いたい関数

public void test(int i) {

     System.out.println(i);

}

 

// 自身をnewしてsubmain関数を呼ぶ

public static void main(String[] args) {

     new Application1().submain();

}

}