Esistono alcuni schemi per verificare se a un metodo è stato assegnato un valore null . Innanzitutto, quello classico. È comune nel codice auto-fatto e ovvio da capire. public void method1(String arg) { if (arg == null) { throw new NullPointerException(“arg”); } } In secondo luogo, è ansible utilizzare un framework esistente. Quel codice sembra […]
Ho notato qualcosa di strano sulle eccezioni non gestite usando il riferimento al metodo Java 8. Questo è il mio codice, usando l’espressione lambda () -> s.toLowerCase() : public class Test { public static void main(String[] args) { testNPE(null); } private static void testNPE(String s) { Thread t = new Thread(() -> s.toLowerCase()); // Thread […]
Ho una lista di oggetti che dicono car . Voglio filtrare questo elenco in base ad alcuni parametri usando Java 8. Ma se il parametro è null , lancia NullPointerException . Come filtrare i valori nulli? Il codice corrente è il seguente requiredCars = cars.stream().filter(c -> c.getName().startsWith(“M”)); Ciò genera NullPointerException se NullPointerException getName() restituisce null […]
Il contratto di equals a null , è il seguente: Per qualsiasi valore di riferimento non nullo x , x.equals(null) deve return false . Questo è piuttosto particolare, perché se o1 != null e o2 == null , allora abbiamo: o1.equals(o2) // returns false o2.equals(o1) // throws NullPointerException Il fatto che o2.equals(o1) throws NullPointerException è […]
Sto cercando di aprire un FileChooser con questo codice: package back_end.controllers; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Button; import javafx.scene.control.ListView; import javafx.scene.layout.BorderPane; import javafx.stage.FileChooser; import java.io.File; import java.net.URL; import java.util.ResourceBundle; /** * Created by Quinn McHugh on 4/15/2014. */ public class StartScreen_Controller implements Initializable { @FXML private ListView lstRecents; @FXML private Button btnBrowse; @FXML private BorderPane […]
C’è una possibilità che questa possa essere una domanda duplice. Inizializzo una variabile String su null. Posso aggiornarla o meno con un valore.Ora voglio controllare se questa variabile non è uguale a null e qualunque cosa provi ottengo un’eccezione di puntatore nullo. Non posso permettermi di lanciare eccezione nullpointer in quanto è costosa. C’è qualche […]
Quando si esegue questo: public class WhatTheShoot { public static void main(String args[]){ try { throw null; } catch (Exception e){ System.out.println(e instanceof NullPointerException); System.out.println(e instanceof FileNotFoundException); } } } La risposta è: true false Il che è stato abbastanza sorprendente per me. Avrei pensato che questo avrebbe comportato un errore in fase di compilazione. […]
Recentemente un mio collaboratore ha scritto in qualche codice per catturare un’eccezione di puntatore nullo attorno a un intero metodo e restituire un singolo risultato. Ho fatto notare come ci possa essere stato un numero qualsiasi di ragioni per il puntatore nullo, quindi l’abbiamo modificato in un controllo difensivo per l’unico risultato. Tuttavia, la cattura […]
Recentemente ho trovato un bug che causa una NullPointerException. L’eccezione viene rilevata e registrata utilizzando un’istruzione standard slf4j. Codice abbreviato di seguito: for(Action action : actions.getActions()) { try { context = action.execute(context); } catch (Exception e) { logger.error(“…”, e); break; } } Come puoi vedere, niente di speciale. Tuttavia, di tutte le dichiarazioni di registrazione […]
Ho dichiarato due carte: Card card1 = new Card(‘3’, Card.Suit.clubs); Card card2 = new Card(‘T’, Card.Suit.diamonds); Questo funziona: Hand hand1 = new Hand(); hand1.takeCard(card1); Ma perché non funziona? Mi dà una NullPointerException sulla seconda riga: Hand[] hand = new Hand[2]; hand[0].takeCard(card2);