Domanda

Ho avuto un grosso problema in qualche codice della libreria, che ho inchiodata ad una singola istruzione:

System.out.println((String) null);

Ok, il codice in realtà non sembra così, ma si chiama certamente println con un argomento nullo. In questo modo fa sì che tutta la mia applicaio per gettare un NullPointerException inaspettato.

In generale, dovrebbe println lanciare questa eccezione sotto quella circostanza, o si tratta di un comportamento non standard a causa di una scarsa applicazione dell'istanza out?

È stato utile?

Soluzione

La JVM di stampe da sole semplicemente "nulli". Questo è il comportamento specificato di PrintStream.print(String) quando dato un argomento null.

Altri suggerimenti

Ok, trovato l'errore, in attuazione della mia piattaforma di PrintStream.print. Credo che seguirò in su con gli sviluppatori.

public void print(String s) {
    // WHERE IS THE NULL CHECK??!
    for(int i=0;i<s.length();i++) {
        write(s.charAt(i));
    }
}

Grazie per aver conferma che questo è davvero un comportamento non standard.

Quello sopra dovrebbe non un'eccezione. Sei sicuro che non hai qualcosa di simile:

System.out.println(a.b);

dove a è null?

In alternativa, forse il tuo System.out è stato impostato su null (non molte persone si rendono conto che è possibile impostare i flussi out / err)?

Quando provo quella linea sul desktop standard di Java (Java SE 6 Update 20 su Mac OS X), non gettare un NullPointerException, stampa solo null.

Credo che lanciando un NullPointerException è un bug in questo caso.

Ho appena provato a fare funzionare questo su Sun JDK 6 e ha funzionato bene. E 'stampato nulla come previsto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top