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