- Shipped
- 8 settembre 2026 alle ore 14:58 UTC
- Author
- Kamo
- Commit
- 4d9a71f
Premendo Nuovo tavolo ha risposto 500: NullPointerException: Non può invocare "java.lang.Integer.intValue()" perché il valore di ritorno di HoldemTable.getButtonSeat() è null E' il momento giusto. HoldemHand.button Seat` è un `int` primitivo; `HoldemTable.button Il sedile è un nullable `Integer`, perché un tavolo non ha pulsante finché non si tratta di una mano. Scritto come `hand!= null ? hand.getButtonSeat() : table.getButtonSeat()`, JLS 15.25 applica la promozione numerica binaria ai due rami e non caselle BOTH — così il espressione chiama `.intValue()` sul tavolo null prima che il risultato sia mai assegnato. Dichiarare la variabile `Integer` non aiuta: il non-boxing avviene all'interno dell'espressione condizionale, e l'assegnazione solo riscatta ciò che sopravvive. Un se/else ora, con un commento dicendo perché, perché il ternario è esattamente il "semplificazione" qualcuno avrebbe raggiunto. Questa è stata la prima cosa che fa chiunque con la funzione, e ha spedito. Ogni il test esistente aveva una mano in corso; non uno ha costruito una vista per l'unico stato il tavolo nuovo di zecca è sempre dentro. `HoldemTableViewTest` costruisce tre di loro — vuoto, seated-but-not-dealt, e il riepilogo della lobby — e ho confermato tutte e tre le riproduzioni la produzione NPE verbatim contro il ternario prima di ripristinare la correzione. Perde anche due cose che il pulsante null non deve essere permesso di inventare: nessun rivenditore e nessun marcatore cieco su un tavolo che non ha trattato, e nessun portafoglio giro per una fila di lobby.