Draft proposal: allow the use of relational operators on Comparable classes (original) (raw)

Vilya Harvey vilya.harvey at gmail.com
Thu Mar 12 10:02:31 PDT 2009


2009/3/12 Kevin Bourrillion <kevinb at google.com>

On Wed, Mar 11, 2009 at 2:11 PM, Neal Gafter <neal at gafter.com> wrote:

Vilya-

I suspect that if you narrowed the scope of this proposal to just enum types, it would have a much better chance of getting accepted for project Coin. To the general proposal, I believe the problem of conflicting meanings of <=, >= and == make it a non-starter.

I tried implementing the change & it was remarkably simple - without having looked at any of the openjdk code before, it took me just one evening; hats off to the compiler designers! However even the first bit of example code I wrote to test it with looked a bit strange:

String a, b; ... if (a < b) System.out.println("a < b"); else if (a > b) System.out.println("a > b"); else if (a == b) System.out.println("a == b"); else System.out.println("a.compareTo(b) == 0")';

It seems really odd that the else clause is actually reachable, but of course it is. I suspect that would catch a lot of people out.

So given that experience and having read everyone's comments, I've come to the conclusion that the proposal would only make sense if it was part of a larger plan that included changing the meaning of == and !=. That would be such a breaking change that I doubt it will ever happen, much less in the jdk7 time frame, so I'm withdrawing the proposal.

Thanks a lot to all of you who provided me with feedback!

Vil.



More information about the coin-dev mailing list