C'est à cause de ce code en String
classe:
public static String valueOf(char data[]) {
return new String(data);
}
Votre code (qui jette NullPointerException
) des appels mentionnés ci-méthode et, par conséquent, l' data
champ est - null
. En fait, cet appel est lancé par l' String
classe sur le constructeur.
À l'aide du JDK 6, l'exception est comme suit:
java.lang.NullPointerException
at java.lang.String.<init>(String.java:177)
at java.lang.String.valueOf(String.java:2840)
at org.bfs.data.SQLTexter.main(SQLTexter.java:364)
Comme pour votre ligne:
System.out.println(as+":"+as.length()); // prints: "null:4"
Cela fonctionne comme la méthode ci-dessous est appelé:
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
De toute évidence, a
est de type Object
si l' String.valueOf(Object)
méthode est appelée.
Si vous souhaitez appeler String.valueOf(Object obj)
méthode, transtypage de votre null comme suit:
System.out.println (String.valueOf((Object)null));
Vous êtes en train de vivre la surcharge de méthode (où il y a plusieurs méthode avec le même nom et la signature de la méthode, mais ont différents paramètres de la méthode). Dans votre cas (où les NPE se produit), la JVM détermine la méthode à appeler pour les plus spécifiques de type statique. Si le type est déclaré, puis le plus spécifique de la méthode est la méthode avec le même type de paramètre de la variable déclarée, d'autre, un plus spécifique de la méthode de la règle est utilisée par la JVM pour trouver la méthode à appeler.
J'espère que cette aide.