java - Is there any Comparable not comparable to itself? -


in contract of comparable, there's nothing forcing object comparable itself. it's just

strongly recommended, not strictly required (x.compareto(y)==0) == (x.equals(y))

which implies it's recommended x.compareto(x) not throw. it's possible write a

class x implements comparable<y> {     ... } 

where x , y 2 unrelated classes. can't see for, in java 8 version of hashmap there's corresponding check.

  • is allowed implement x implements comparable<y> 2 unrelated classes?
  • does make sense?

i guess answers yes , no, it's guess

comparable promotes contract comparisons should consistent equals, i.e. (a.compareto(b) == 0) == a.equals(b). not force , weird contract can enforced.

so create a:

class dumbinteger implements comparable<dumbinteger> {     private final int i;     public dumbinteger(int i) { this.i = i; }     public int compareto(dumbinteger di) { return 0; }     public boolean equals(object other) { /* checks */ return other.i == this.i; } } 

and create a:

class dumberinteger implements comparable<string> {     private final int i;     public dumberinteger(int i) { this.i = i; }     public int compareto(string s) { return 0; }     public boolean equals(object other) { /* checks */ return other.i == this.i; }      public static void main(string[] args) {         system.out.println(new dumberinteger(0).compareto("abc"));     } } 

but there no point in doing that. in case not specific java 8 comparable interface has been there since java 2 , "generified" in java 5.

but not flaw in comparable interface per se, because i don't think there way in java create generic interface i<t> can implemented classes subtypes of t.


Comments

Popular posts from this blog

c++ - How to add Crypto++ library to Qt project -

jQuery Mobile app not scrolling in Firefox -

How to use vim as editor in Matlab GUI -