Une alternative aux goyaves Defaults.java
ce qui permet à l'implémentation de déterminer les valeurs par défaut (amélioré par l'utilisation de La réponse de Antag99 ) :
import static java.util.stream.Collectors.toMap;
import java.lang.reflect.Array;
import java.util.Map;
import java.util.stream.Stream;
public class DefaultValue {
/**
* @param clazz
* the class for which a default value is needed
* @return A reasonable default value for the given class (the boxed default
* value for primitives, <code>null</code> otherwise).
*/
@SuppressWarnings("unchecked")
public static <T> T forClass(Class<T> clazz) {
return (T) DEFAULT_VALUES.get(clazz);
}
private static final Map<Class<?>, Object> DEFAULT_VALUES = Stream
.of(boolean.class, byte.class, char.class, double.class, float.class, int.class, long.class, short.class)
.collect(toMap(clazz -> (Class<?>) clazz, clazz -> Array.get(Array.newInstance(clazz, 1), 0)));
public static void main(String... args) {
System.out.println(DefaultValue.forClass(int.class)); // 0
System.out.println(DefaultValue.forClass(Integer.class)); // null
}
}
2 votes
C'est un problème courant, j'aimerais que Java ajoute une fonction
default(T)
comme en C#.0 votes
C'est en soi une question intéressante, mais pourquoi en avez-vous besoin après tout ? Est-ce que c'est pour définir certaines propriétés du bean ou autre ? Ne sont-elles pas déjà initialisées implicitement avec ces valeurs par défaut ?
0 votes
@BalusC - Pour initialiser un formulaire HTML qui a un paramètre de méthode avec les valeurs par défaut.