前回はパラメータの定義の仕方を見ましたが、パラメータ値の型は文字列 (String) としていました。 実際には文字列以外にもいろいろな型のパラメータを定義することができます。
パラメータ値の型は、プリミティブ型のような「単一値 (one value)」と、コレクションのような「多重値 (multiple value)」に大別できます*1。 今回は「単一値」を見ていきます。
使用できる「単一型」の種類
定義できる型には以下のようなものがあります:
- 文字列:char, Character, String, StringBuffer
- 真偽値:boolean, Boolean
- 整数値:byte, Byte, short, Short, int, Integer, long, Long
- 浮動小数点数:float, Float, double, Double
- 日付:java.util.Date
- ファイル(ディレクトリ):java.io.File
- URL:java.net.URL
パラメータの型の定義方法
Integer 型を例に、パラメータの型の定義方法を見ていきましょう。 定義の仕方は簡単で、単にパラメータにしたいフィールドの型を普通に Integer 型で宣言するだけです:
/** @parameter */ private Integer age;
POM ファイル等からの値の設定方法は文字列の場合と同じです。 「plugin/configuraion」要素の子テキストに値を書くだけです:
... <configuration> <age>98</age> </configuraion> ...
ビルド時には、子テキストがキチンと Integer 型に変換されてパラメータに設定されます。
値の変換方法
POM ファイルなどに設定した文字列は、キチンと対応する型に変換されてからパラメータに設定されることを見ました。 以降で、簡単にその変換方法(アルゴリズム)を見ていきましょう。
★boolean, Boolean★
"true" である場合は「真」を、そうでなければ「偽」になります。
★byte, Byte, short, Short, int, Integer, long, Long★
各クラス(ラッパークラス)の parseXxx() メソッド、もしくは valueOf() メソッドを用いて変換が行われます。
★float, Float, double, Double★
各クラス(ラッパークラス)の valueOf() メソッドを用いて変換が行われます。 特に、指数部がある表記 "6.02E+23" などもキチンと変換されます。
★java.util.Date★
DateFormat#parse() メソッドを使って変換が行われます。 フォーマットは "yyyy-MM-dd HH:mm:ss.S a" もしくは "yyyy-MM-dd HH:mm:ssa" のような形です。 サンプル → "2008-01-28 03:28:55.1 PM"
★java.io.File, java.net.URL★
余り説明の必要はないかと・・・
*1:「単一値」「多重値」は拙者の勝手な訳デス。