Sponsoring getting 5015163 "(str) String merge/join that is the inverse of String.split()" into JDK 7
Ulf Zibis
Ulf.Zibis at gmx.de
Tue Oct 27 09:42:27 UTC 2009
Am 26.10.2009 18:43, Joseph D. Darcy schrieb:
> Neal Gafter wrote:
>> You can hardly add any methods to Object, event static methods,
>> without breaking compatibility, because they get added to every the
>> overload set if the name is used for methods in existing code.
>
> Indeed, which is why these methods were added in a new class to
> prevent unwanted changes to the meaning of source code.
>
I don't get the problem. Can anybody help me by an example?
Following code works fine for me:
package java.lang;
public class Object {
.....
public static int hashCode(Object obj) {
return obj.hashCode();
}
.....
}
public class MyClass1 {
private final int value;
public MyClass1(int value) {
this.value = value;
}
public static int hashCode(MyClass1 obj) {
return 3 * obj.value;
}
public static void main(String... args) {
MyClass1 c = new MyClass1(99);
System.out.println(c.hashCode());
System.out.println(hashCode(c)); // compile error if using
official version of class Object
}
}
public class MyClass2 {
private final int value;
public MyClass2(int value) {
this.value = value;
}
@Override
public int hashCode() {
return value;
}
public static void main(String... args) {
MyClass2 c = new MyClass2(99);
System.out.println(c.hashCode());
System.out.println(hashCode(c)); // compile error if using
official version of class Object
}
}
-Ulf
More information about the core-libs-dev
mailing list