ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

System.getProperty("file.separator") = java.io.File.separator

なんとはなしにRestletのソース読んでたら、java.io.File.separatorなる定数があることに気づきました。
これ、java.lang.System#getPropertyで取得できるシステムプロパティのfile.separatorと等価なのですが、毎回getPropertyするよりは、定数を参照した方が良いので、これを使わない手はないと思います。
他にも、path.separatorも用意されていて、以下のようになっています。

定数 対応するシステムプロパティキー
java.io.File.separatorChar char file.separator
java.io.File.separator java.lang.String file.separator
java.io.File.pathSeparatorChar char path.separator
java.io.File.pathSeparator java.lang.String path.separator

ちなみに、テストソースはこんな感じ。

public class Test {
	public static void main(String[] args) throws Exception
	{
		System.out.println("System.getProperty(file.separator) = " + System.getProperty("file.separator"));
		System.out.println("java.io.File.separator = " + java.io.File.separator);

		System.out.println("System.getProperty(path.separator) = " + System.getProperty("path.separator"));
		System.out.println("java.io.File.pathSeparator = " + java.io.File.pathSeparator);
	}
}

結果はこんな感じ。

System.getProperty(file.separator) = \
java.io.File.separator = \
System.getProperty(path.separator) = ;
java.io.File.pathSeparator = ;

ところで、他にもこういうのがあるのでは?と思い、調べてみることにしました。
どうやって調べるか考えたのですが、java.io.File.separatorCharのJavadoc

関連項目:
System.getProperty(java.lang.String)

というのがあったので、これを利用して、「@see java.lang.System#getProperty(java.lang.String)」をJava SE5のソースからgrepしてみることに。
すると、いくつかはgrepでヒットしたのですが、あくまでそれはgetPropertyメソッドを使っている個所であって、エイリアスの定数というわけではありませんでした。残念。
しっかし、JavaAPIも奥が深いというか、知らないことがほんと多いです。