< prev index next >

src/java.desktop/share/classes/java/awt/image/ColorModel.java

Print this page

        

@@ -29,11 +29,11 @@
 import java.awt.color.ColorSpace;
 import java.awt.color.ICC_ColorSpace;
 import sun.java2d.cmm.CMSManager;
 import sun.java2d.cmm.ColorTransform;
 import sun.java2d.cmm.PCMM;
-import java.awt.Toolkit;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Map;
 import java.util.WeakHashMap;
 
 /**

@@ -1439,20 +1439,23 @@
         return getNormalizedComponents(components, 0,
                                        normComponents, normOffset);
     }
 
     /**
-     * Tests if the specified {@code Object} is an instance of
-     * {@code ColorModel} and if it equals this
+     * Tests if the specified {@code Object} equals this
      * {@code ColorModel}.
+     * In order to protect the symmetry property of
+     * {@code (a.equals(b) == b.equals(a))},
+     * the target object must be the exact same class as this
+     * object to evaluate as {equals}.
      * @param obj the {@code Object} to test for equality
      * @return {@code true} if the specified {@code Object}
-     * is an instance of {@code ColorModel} and equals this
-     * {@code ColorModel}; {@code false} otherwise.
+     * equals this {@code ColorModel}; {@code false} otherwise.
      */
+    @Override
     public boolean equals(Object obj) {
-        if (!(obj instanceof ColorModel)) {
+        if ((obj == null) || (obj.getClass() !=  getClass())) {
             return false;
         }
         ColorModel cm = (ColorModel) obj;
 
         if (this == cm) {

@@ -1485,27 +1488,20 @@
     /**
      * Returns the hash code for this ColorModel.
      *
      * @return    a hash code for this ColorModel.
      */
+    @Override
     public int hashCode() {
-
-        int result = 0;
-
-        result = (supportsAlpha ? 2 : 3) +
-                 (isAlphaPremultiplied ? 4 : 5) +
-                 pixel_bits * 6 +
-                 transparency * 7 +
-                 numComponents * 8;
-
-        if (nBits != null) {
-            for (int i = 0; i < numComponents; i++) {
-                result = result + nBits[i] * (i + 9);
-            }
-        }
-
-        return result;
+        int hash = 7;
+        hash = 89 * hash + this.pixel_bits;
+        hash = 89 * hash + Arrays.hashCode(this.nBits);
+        hash = 89 * hash + this.transparency;
+        hash = 89 * hash + (this.supportsAlpha ? 1 : 0);
+        hash = 89 * hash + (this.isAlphaPremultiplied ? 1 : 0);
+        hash = 89 * hash + this.numComponents;
+        return hash;
     }
 
     /**
      * Returns the {@code ColorSpace} associated with this
      * {@code ColorModel}.
< prev index next >