タイトルJava Watch on the X》1 - Mac OS Xでのシステムプロパティ(2)カテゴリーJava, Java Watch on the X
作成日2001/11/2 15:43:14作成者新居雅行
【MDOnline読者様限定コンテンツ】
――――システムプロパティを追加する
システムプロパティは、System.setPropertyを使えば、書き換えることもできてしまう。たとえば、「System.setProperty("user.name", "anothers");」というプログラムは可能で、これにより最初から設定されているuser.nameプロパティに対する値がanothersに変更されてしまう。目的によってはこうした処理も必要にはなるとは思われるが、既存のプロパティの書き換えはJavaの動作全体の動きにも関係する可能性があるので、慎重に行うべきである。
システムプロパティに独自のものを付け加える場合、起動時に指定する方法と、プログラムで指定する方法がある。プログラムで指定するには、setPropertyを使う。setPropertiesを使えば、システムプロパティをごっそり差し換えることができるが、引数に指定したPropertiesクラスのオブジェクトに定義されていないプロパティは、System.getPropertyでは取得できない。たとえば、自分でつかう3つほどの独自プロパティだけをPropertiesとして用意してSystem.setPropertiesを使うと、os.versionやuser.homeなどの既存のシステムプロパティが使えなくなってしまうのである。普通はそんなことはしないだろうけど、システムプロパティを生かしながら独自のプロパティを追加したい場合は1つ1つ、setPropertiesで指定するのが1つの方法だ。
もし、追加したいプロパティがたくさんあって、それらをシステムプロパティに追加したい場合は、Propertiesクラスのデフォルトのプロパティリストを使ったコンストラクタを使うという方法もある。たとえばこんな感じだ。

Properties myProps = new Properties(System.getProperties());
/* ここにmyPropsの値を設定するプログラムがくる */

こうしておき、プロパティの取得はmyPropsから行う。そうすると、たとえば、自分で定義したキーのプロパティでも、os.versionなどのプロパティでも、myProps.getProperty(キー)によって取得できるようになる。Propertiesのコンストラクタで引数にPropertiesクラスを指定すると、自分に存在しないものは引数に指定したプロパティリストに探しに行く。いすれにしても、ここまでのプログラムを作ることはあまりないと思われるが、いちおうコメントしておこう。
関連リンク