Objects.nonNull() (original) (raw)
Brian Goetz brian.goetz at oracle.com
Thu Jan 13 22:38:59 UTC 2011
- Previous message: Objects.nonNull()
- Next message: Objects.nonNull()
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
and public static T nonNull(String obj) { return (obj == null) ? "" : obj; } etc. I don't know, this doesn't feel right to me. It would probably make more sense to have a: public static T defaulted(T test, T defVal) { return test == null ? defVal : test; } This would cover both of the above cases and more.
Right, my exposition suffered from my desire to keep it short and not get ratholed on the details of the carpet-sweeping methods (which was unsuccessful.) The above is (clearly) the general case, but in the code bases I've seen this in, its nearly always paired with specific versions for String (default "") and arrays (default empty array.)
People use these to simplify cases like
if (foo != null) for (Foo f : foo) { ... }
to
for (Foo f : nonNull(foo)) { ... }
It is an extremely common pattern; I've seen it in nearly every nontrivial code base I've worked with. Frequently multiple times in the same code base :(
Summarizing, the fail-fast and the carpet-sweeping behavior are both valid and common use cases. The current naming is not only confusing but basically forecloses on ever offering the carpet-sweeping behavior, which, despite objections from some, is something people do all the time.
- Previous message: Objects.nonNull()
- Next message: Objects.nonNull()
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]