RFR: 8279640: ListView with null SelectionModel/FocusModel throws NPE

Michael Strauß mstrauss at openjdk.java.net
Tue Jan 11 17:24:37 UTC 2022


On Tue, 11 Jan 2022 13:04:52 GMT, Marius Hanl <mhanl at openjdk.org> wrote:

> When a null value is possible, guards against are needed. Unfortunately there is no built-in way to forbid null in Java as whole.

I think null checks should only be done to verify the preconditions of an operation, and not to guard against bugs. This means that, when `null` is not a _valid_ value for a property (regardless of whether it is a _possible_ value), no attempt should be made to guard against this in downstream code. In fact, I would argue that doing so is a strong code smell.

The question is whether or not `null` should be a valid value for the `selectionModel` and `focusModel` properties. I think there are good reasons to think that it shouldn't. The primitive property classes (`IntegerProperty`, `BooleanProperty`, etc.) have the same issue, and they deal with this situation by coercing the invalid `null` value to their respective default value.

It's not clear to me whether the `ListCellBehavior.anchor` attached property setter would need any special-casing. When `null` (or `-1` in case of `ListViewBehavior.setAnchor`) is passed in, it seems to remove the anchor. Isn't that what we'd expect?

-------------

PR: https://git.openjdk.java.net/jfx/pull/711


More information about the openjfx-dev mailing list