Neuer Tisch 500'd auf einem ternary, das eine Null-Taste entpackt

FixMediaService
Shipped
8. September 2026 um 14:58 UTC
Author
Kamo
Commit
4d9a71f

Pressing Neue Tabelle beantwortet 500: NullPointerException: Kann nicht aufrufen "java.lang.Integer.intValue()", weil die Rückgabewert von HoldemTable.getButtonSeat() ist null bei **************** "HoldemHand.buttonSeat" ist ein primitives "int"; "HoldemTable.buttonSeat" ist ein nullable "Integer", weil eine Tabelle hat keine Taste, bis es eine Hand ausgeteilt. Geschrieben als "Hand != null ? hand.getButtonSeat() : table.getButtonSeat()", JLS 15.25 gilt binäre numerische Förderung auf die beiden Zweige und ungeboxes BOTH - so die Expressing-Aufrufe ".intValue()" auf der Tabelle null, bevor das Ergebnis jemals ist zugeordnet. Die Variable "Integer" zu erklären, hilft nicht: Das Unboxing passiert innerhalb des bedingten Ausdrucks, und die Zuordnung nur neu verpackt, was überlebt. Ein if/else jetzt, mit einem Kommentar, warum, denn das ternary ist genau die "Vereinfachung", nach der jemand greifen würde. Dies war das erste, was jemand mit der Funktion macht, und es ausgeliefert. Jeder bestehenden Test hatte eine Hand im Gange; nicht einer baute eine Ansicht für den einzigen Staat ein brandneue Tabelle ist immer in. "HoldemTableViewTest" baut drei davon leer, Sitzen-aber-nicht-dealt, und die Lobby-Zusammenfassung - und ich bestätigte alle drei reproduzieren die Produktion NPE wörtlich gegen das ternäre vor der Wiederherstellung der Lösung. Es pins auch zwei Dinge, die die Null-Taste darf NICHT zu erfinden: kein Händler und keine blinden Markierungen auf einem Tisch, der nicht ausgeteilt hat, und keine Brieftasche Hin- und Rückfahrt für eine Lobby-Reihe.

All changes

Wie, was Sie sehen Versand?

Jedes dieser Updates landet automatisch in Ihrem Arbeitsbereich. Starten Sie frei und beobachten Sie es Woche für Woche wachsen.

Free Forever startenPreisgestaltung anzeigen