プライベート関数のテスト ― 2008年06月30日 14時17分26秒
public void main(String[] args)
を始めとする、static 関数からも呼べてしまうようだ。
簡単な例をあげよう。
public class Test {
private void Private()
{
System.out.println("private");
}
public void Public()
{
System.out.println("public");
}
public static void main(String[] args)
{
Test t = new Test();
t.Private();
t.Public();
}
}
以下の環境で試した。
% java -version
java version "1.6.0_03-p4"
Java(TM) SE Runtime Environment (build 1.6.0_03-p4-root_20_feb_2008_11_31-b00)
Java HotSpot(TM) Client VM (build 1.6.0_03-p4-root_20_feb_2008_11_31-b00, mixed mode)
% javac Test.java
% java Test
private
public
インスタンスを必要としない static 関数が、自身内でインスタンスを生成すれば、private 関数を呼べてしまう。どうも違和感が残るが悪いとは思わない。しかし、main 関数はプログラムを起動し実行するためのもので、Java では必ずクラスを作らなければいけないので、static だとの認識だったので、この事実を発見した時は、目を疑ってしまった。
しかし、各クラスに main を作り、各クラスの簡単なテストコードを書くことがよくある。そのテストの為に、private 関数を作りたいところを、public 関数にしたこともあったので、テスト用には、この動作はむしろ好都合だ。仕様と、変数での動作が気になるので後で調べようと思う。
次回。
最近のコメント