前回に続き、今回は「多重値 (multiple value)」*1のパラメータを見ていきましょう。 「多重値」とは、配列やコレクション・フレームワーク内の型などのことです。
使用できる「多重値」の型
具体的な「多重値」の型には以下のようなものがあります:
値の設定方法はそれぞれの型によって異なります。 また、java.util.Collection, java.util.Map については Generics での型指定はできません*2。 以降でそれぞれの型を見ていきましょう。
配列
配列型のパラメータの宣言は以下の通り:
/** @parameter */ private String[] myArray;
パラメータ値の指定は「単一値」の場合と同じように、<configuration> 要素下に以下の要素を加えます:
<myArray> <param>メネラウスの定理</param> <param>チェバの定理</param> <param>トレミーの定理</param> </myArray>
「myArray」はパラメータの名前、「param」は任意の文字列です。
後で出てくる java.util.Collection と異なり、配列では要素の型が普通に(「単一値」の場合と同じように)指定できるので便利です。 例えば、java.lang.Integer 型の配列を使用したい場合は以下のようにします:
/** @parameter */ private Integer[] myArray;
<myArray> <param>1</param> <param>2</param> </myArray>
java.util.Collection のサブタイプ
java.util.Collection のサブタイプである java.util.List や java.util.Set(java.util.Collection も)型のパラメータも使用することができます。 パラメータの宣言は以下の通り:
/** @parameter */ private List myList;
java.util.Collection のパラメータ値の指定も配列の場合と同じです:
<myList> <param>方冪の定理</param> <param>円周角の定理</param> <param>中線定理</param> <param>接弦定理</param> </myList>
java.lang.Collection 型のパラメータでは基本的に java.lang.String 型が使われ、パラメータの宣言時に型を指定できません*3(そのうち Generics に対応すればできるようになるかもしれませんが)。 ただし、以下のようにパラメータ値の指定をする際に型も一緒に指定すると、配列の場合と同じように、変換された型のオブジェクトが設定されます:
<myList> <java.lang.Integer>1</java.lang.Integer> <java.lang.Integer>2</java.lang.Integer> </myList>
java.util.Map
java.util.Collection 型の他に、java.util.Map 型のパラメータも使用できます:
/** @parameter */ private Map myMap;
パラメータ値の設定には、キーを要素名に、値をその子テキストにして指定します:
<myMap> <H>水素</H> <O>酸素</O> <C>炭素</C> </myMap>
java.lang.Map 型のパラメータでは、キーも値も java.lang.String 型が使用されます。
java.util.Properties
java.util.Properties 型のパラメータも使用できます:
/** @parameter */ private Properties props;
パラメータ値の設定は java.util.Collection の場合と少々異なり、<property> 要素下に <name> 要素と <value> 要素を書きます:
<props> <property> <name>H2O</name> <value>水</value> </property> <property> <name>CO2</name> <value>二酸化炭素</value> </property> </props>
キーの文字列に要素名にできないようなもの(例えば空白が入っているなど)を使用する場合はこちらを使うと良いでしょう。