8
提供されたクラスタイプのインスタンスを返すメソッドが必要です。与えられた型が "空の"インスタンスを作成できるように制限されていると仮定しよう。たとえば、String.class
を指定すると、空のStringが返され、Integer.class
を指定すると、初期値がゼロのIntegerが返されます。しかし、どのようにして(ボックス化された)プリミティブ型を即座に作成できますか?このような?クラスが既知の(箱入りの)プリミティブインスタンスを作成する
public Object newInstance(Class<?> type) {
if (!type.isPrimitive()) {
return type.newInstance(); // plus appropriate exception handling
} else {
// Now what?
if (type.equals(Integer.class) || type.equals(int.class)) {
return new Integer(0);
}
if (type.equals(Long.class) // etc....
}
}
すべての可能なプリミティブ型を反復処理する唯一のソリューションですか?それとももっと簡単な解決策ですか? (彼らは引数なしのコンストラクタを持っていないので)両方
int.class.newInstance()
と
Integer.class.newInstance()
がInstantiationException
を投げることに注意してください。
@Joonas:もう一度見てください:) –
ありがとう!それは働くかもしれません:) –
私は私が行くだろうと思う?:チェーン。 'type == long.class? (長い)0L: 'など –