倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

プラグインを作ろう! (10) -- パラメータ値の型:one value

前回はパラメータの定義の仕方を見ましたが、パラメータ値の型は文字列 (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:「単一値」「多重値」は拙者の勝手な訳デス。