< prev index next >

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

Print this page

        

@@ -25,10 +25,11 @@
 
 package java.awt.image;
 
 import java.awt.Transparency;
 import java.awt.color.ColorSpace;
+import java.util.Arrays;
 
 /**
  * The {@code PackedColorModel} class is an abstract
  * {@link ColorModel} class that works with pixel values which represent
  * color and alpha information as separate samples and which pack all

@@ -383,23 +384,26 @@
                                           raster.getHeight(), x, y,
                                           band);
     }
 
     /**
-     * Tests if the specified {@code Object} is an instance
-     * of {@code PackedColorModel} and equals this
+     * Tests if the specified {@code Object} equals this
      * {@code PackedColorModel}.
+     * 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 PackedColorModel} and equals this
-     * {@code PackedColorModel}; {@code false} otherwise.
+     * equals this {@code PackedColorModel}; {@code false} otherwise.
      */
+    @Override
     public boolean equals(Object obj) {
-        if (!(obj instanceof PackedColorModel)) {
-            return false;
-        }
-
+        /*
+         * We verify the type of argument obj in super.equals() where we check
+         * for equality of class name.
+         */
         if (!super.equals(obj)) {
             return false;
         }
 
         PackedColorModel cm = (PackedColorModel) obj;

@@ -410,10 +414,22 @@
             }
         }
         return true;
     }
 
+    /**
+     * Returns the hash code for this PackedColorModel.
+     *
+     * @return    a hash code for this PackedColorModel.
+     */
+    @Override
+    public int hashCode() {
+        int hash = super.hashCode();
+        hash = 89 * hash + Arrays.hashCode(this.maskArray);
+        return hash;
+    }
+
     private static final int[] createBitsArray(int[]colorMaskArray,
                                                int alphaMask) {
         int numColors = colorMaskArray.length;
         int numAlpha = (alphaMask == 0 ? 0 : 1);
         int[] arr = new int[numColors+numAlpha];
< prev index next >