Boolean.TYPEとboolean.class
プリミティブ型に対応するラッパ型が持つ「TYPE」という定数はプリミティブ型のクラスを表す。
例えばBeoolean.TYPEはbooleanのクラス型を表すが、これはboolean.classと同じ。
System.out.println(boolean.class == Boolean.TYPE);
→ true
ところで次のようなメソッドがあった場合、
public T get(Class<T> type) { return null; }
get(boolean.class)の返り値はBooleanとみなされる?booleanとみなされる?
これを調べるために次のようなメソッドを作成。
public String getType(boolean b) { return "boolean"; } public String getType(Boolean b) { return "Boolean"; }
で、次のようにしてみた。
System.out.println(getType(get(boolean.class)));
結果は「Boolean」。ま、当然といえば当然か。