It works fine too.
Is coded:

public class MyClass1 {
   private final int value;

   public MyClass1(int value) {
       this.value = value;
   }

   public static int hashCode(Object key) {
       return 3;
   }

//    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));
System.out.println(Object.hashCode(c)); // compile error if using official version of class Object
   }
}


-Ulf


Am 27.10.2009 15:53, Neal Gafter schrieb:
Try adding

  public static hashCode(Object key) {
      return 3;
  }

to MyClass.  Such a class is broken by the proposed change.

On Tue, Oct 27, 2009 at 2:49 AM, Ulf Zibis <ulf.zi...@gmx.de <mailto:ulf.zi...@gmx.de>> wrote:

    Correction:


    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));
         System.out.println(Object.hashCode(c)); // compile error if
    using official version of class Object
     }
    }


    -Ulf




Reply via email to