It's a bit of an OT tangent, but I actually don't like chained ternaries anyway. I can never remember the order of precedence, and even if I could, it's visually unclear. In fact, for anything but the
very shortest of expressions, I split it into three lines:
int whatever = someCondition
? calculateSomething()
: calculateSomethingElse();
On top of that, co-opting Boolean for a tri-value is a bit sketchy. You can mostly make a case for it where the null represents "unknown" (e.g., a boolean ratioIsPositive where the denominator is 0), though even then I'd argue for deciding whether "unknown" resolves to true or false as quickly as possible, and ideally at the time when you first evaluate it (in the ratioIsPositive example, I'd expect that a denominator of 0 means false, since undefined is not positive; and if you want it to be true, call the var ratioIsPostiveOrUndefined or similar). Or, barring that, creating a tri-value enum (POSTIVE, NEGATIVE, UNDEFINED). Note for instance that Boolean.valueOf(String) returns false, not null, if you pass in a null.
Point is, Boolean is really there to provide a two-value class that can also be used with collections/generics/etc. The fact that this lets it technically become a three-value class is an unfortunate side effect, not something to be exploited.
So I still think the OP got what they deserve. ;)