Ho bisogno di un metodo che restituisca un'istanza del tipo di classe fornito. Supponiamo che i tipi forniti siano limitati a tale che possa essere creata un'istanza "vuota" di essi. Ad esempio, fornire String.class
restituirebbe una stringa vuota, fornendo un valore Integer.class
restituirebbe un numero intero il cui valore iniziale è zero e così via. Ma come posso creare al volo tipi primitivi (in scatola)? Come questo?Creazione istanza primitiva (in box) quando la classe è nota
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....
}
}
È l'unica soluzione per scorrere tutti i possibili tipi primitivi oppure esiste una soluzione più semplice? Si noti che sia
int.class.newInstance()
e
Integer.class.newInstance()
tiro un InstantiationException
(perché non hanno costruttori nullaria).
@Joonas: Guarda ora :) –
Grazie! Potrebbe funzionare :) –
Penso che andrei a fare una?: Catena. 'type == long.class? (Lungo) 0L: ', ecc. –