Méthode à ellipse et argument null
Bonjour à tous,
Je viens de tomber sur un comportement de Java que je ne m'explique pas. Lorsque qu'on passe l'argument null à une méthode à ellipse on obtient une exception NullPointerException mais si on passe une référence dont la valeur est null tout se passe bien.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
public class Test {
private static void f(Object... objects) {
System.out.println(objects.length + " arguments");
}
public static void main(String[] args) {
Object obj = null;
f(); // fonctionne
//f(null); // ne fonctionne pas
f(obj); // fonctionne
f(null, null); // fonctionne
}
} |
Est-ce que quelqu'un sait pourquoi? Non que ce soit une question fondamentale mais j'aimerais comprendre ce qui se passe.
Cordialement.
Et pour le virer le warning ????
Bonjour à tous,
Désolé de m'incruster.
Mais le comportement à ellipse est tout de meme particulier.
Je créée une classe abstraite de constructeur
public Constructeur(Objet o1, Objet o2, Object... os){
super();
init(os);
...
}
et de méthode abstraite comme ceci.
protected abstract init(Object... os);
Jusque là, pas de problème.
Dans une de mes classes qui hérite de ma classe abstraite, je souhaite passer dans la liste l'objet "os" au constructeur, un tableau de String.
super(o1, o2, String[]) et ca me fait :
The argument of type String[] should explicitly be cast to Object[] for the invocation of the varargs constructor Excel(String, String, Object...). It could alternatively be cast to Object for a varargs invocation
Comment me débarrasser du warning pour être propre (ca marche sinon pour le moment).