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