On Sun, 25 Sep 2022 04:01:26 GMT, SWinxy <d...@openjdk.org> wrote: > Some also had two separate methods to check equality, one calling the other. > Objects.equals() is used in some places as a replacement for a local copy of > the function. In the end, the equals methods become quicker to understand > their checks, more condensed, and becomes more in line with other equality > methods in the JDK.
Maybe keep the old variable names: src/java.desktop/share/classes/java/awt/font/FontRenderContext.java line 314: > 312: && o1.getFractionalMetricsHint() == > getFractionalMetricsHint() > 313: && o1.getTransform().equals(getTransform()); > 314: } Suggestion: if (o instanceof FontRenderContext rhs) { // if neither instance is a subclass, reference values directly. if (!rhs.defaulting && !defaulting) { return rhs.aaHintValue == aaHintValue && rhs.fmHintValue == fmHintValue && Objects.equals(tx, rhs.tx); } else { return rhs.getAntiAliasingHint() == getAntiAliasingHint() && rhs.getFractionalMetricsHint() == getFractionalMetricsHint() && rhs.getTransform().equals(getTransform()); } src/java.desktop/share/classes/java/awt/font/ImageGraphicAttribute.java line 190: > 188: && getAlignment() == o1.getAlignment() > 189: && fImage.equals(o1.fImage); > 190: Suggestion: return this == o || o instanceof ImageGraphicAttribute rhs && fOriginX == rhs.fOriginX && fOriginY == rhs.fOriginY && getAlignment() == rhs.getAlignment() && fImage.equals(rhs.fImage); src/java.desktop/share/classes/java/awt/font/ShapeGraphicAttribute.java line 217: > 215: && fStroke == o1.fStroke > 216: && getAlignment() == o1.getAlignment() > 217: && fShape.equals(o1.fShape); Suggestion: return this == o || o instanceof ShapeGraphicAttribute rhs && fStroke == rhs.fStroke && getAlignment() == rhs.getAlignment() && fShape.equals(rhs.fShape); src/java.desktop/share/classes/java/awt/font/TransformAttribute.java line 162: > 160: public boolean equals(Object o) { > 161: return this == o || o instanceof TransformAttribute o1 > 162: && transform.equals(o1.transform); Suggestion: return this == o || o instanceof TransformAttribute rhs && transform.equals(rhs.transform); src/java.desktop/share/classes/sun/font/AttributeValues.java line 471: > 469: && Objects.equals(font, o1.font) > 470: && imUnderline == o1.imUnderline > 471: && Objects.equals(imHighlight, o1.imHighlight); Suggestion: return this == o || o instanceof AttributeValues rhs && defined == rhs.defined && nondefault == rhs.nondefault && underline == rhs.underline && strikethrough == rhs.strikethrough && superscript == rhs.superscript && width == rhs.width && kerning == rhs.kerning && tracking == rhs.tracking && ligatures == rhs.ligatures && runDirection == rhs.runDirection && bidiEmbedding == rhs.bidiEmbedding && swapColors == rhs.swapColors && Objects.equals(transform, rhs.transform) && Objects.equals(foreground, rhs.foreground) && Objects.equals(background, rhs.background) && Objects.equals(numericShaping, rhs.numericShaping) && Objects.equals(justification, rhs.justification) && Objects.equals(charReplacement, rhs.charReplacement) && size == rhs.size && weight == rhs.weight && posture == rhs.posture && Objects.equals(family, rhs.family) && Objects.equals(font, rhs.font) && imUnderline == rhs.imUnderline && Objects.equals(imHighlight, rhs.imHighlight); src/java.desktop/share/classes/sun/font/CoreMetrics.java line 87: > 85: && underlineThickness == o1.underlineThickness > 86: && ssOffset == o1.ssOffset > 87: && italicAngle == o1.italicAngle; Suggestion: return this == o || o instanceof CoreMetrics rhs && ascent == rhs.ascent && descent == rhs.descent && leading == rhs.leading && baselineIndex == rhs.baselineIndex && baselineOffsets[0] == rhs.baselineOffsets[0] && baselineOffsets[1] == rhs.baselineOffsets[1] && baselineOffsets[2] == rhs.baselineOffsets[2] && strikethroughOffset == rhs.strikethroughOffset && strikethroughThickness == rhs.strikethroughThickness && underlineOffset == rhs.underlineOffset && underlineThickness == rhs.underlineThickness && ssOffset == rhs.ssOffset && italicAngle == rhs.italicAngle; src/java.desktop/share/classes/sun/font/Decoration.java line 175: > 173: && Objects.equals(fgPaint, o1.fgPaint) > 174: && Objects.equals(bgPaint, o1.bgPaint) > 175: && Objects.equals(imUnderline, o1.imUnderline); Suggestion: return this == o || o instanceof DecorationImpl other && swapColors == other.swapColors && strikethrough == other.strikethrough && Objects.equals(stdUnderline, other.stdUnderline) && Objects.equals(fgPaint, other.fgPaint) && Objects.equals(bgPaint, other.bgPaint) && Objects.equals(imUnderline, other.imUnderline); src/java.desktop/share/classes/sun/font/FontLineMetrics.java line 103: > 101: > 102: public boolean equals(Object o) { > 103: return this == o || o instanceof FontLineMetrics o1 && > Objects.equals(cm, o1.cm); Suggestion: return this == o || o instanceof FontLineMetrics rhs && Objects.equals(cm, rhs.cm); src/java.desktop/share/classes/sun/font/GlyphLayout.java line 141: > 139: && script == o1.script > 140: && lang == o1.lang > 141: && font.equals(o1.font); Suggestion: return this == o || o instanceof LayoutEngineKey rhs && script == rhs.script && lang == rhs.lang && font.equals(rhs.font); src/java.desktop/share/classes/sun/font/GlyphLayout.java line 278: > 276: && hash == o1.hash > 277: && font.equals(o1.font) > 278: && frc.equals(o1.frc); Suggestion: return this == o || o instanceof SDKey rhs && hash == rhs.hash && font.equals(rhs.font) && frc.equals(rhs.frc); src/java.desktop/share/classes/sun/font/PhysicalFont.java line 45: > 43: > 44: public boolean equals(Object o) { > 45: return o instanceof PhysicalFont other The old implementation also checked that the runtime class of `other` is the same as that of `this`: Suggestion: return o instanceof PhysicalFont other && other.getClass() == this.getClass() src/java.desktop/share/classes/sun/font/StandardGlyphVector.java line 694: > 692: } > 693: > 694: return Objects.equals(gti, o1.gti); Suggestion: if (o instanceof StandardGlyphVector other) { if (glyphs.length != other.glyphs.length) { return false; } for (int i = 0; i < glyphs.length; ++i) { if (glyphs[i] != other.glyphs[i]) { return false; } } if (!font.equals(other.font)) { return false; } if (!frc.equals(other.frc)) { return false; } if ((other.positions == null) != (positions == null)) { if (positions == null) { initPositions(); } else { other.initPositions(); } } if (positions != null) { for (int i = 0; i < positions.length; ++i) { if (positions[i] != other.positions[i]) { return false; } } } return Objects.equals(gti, other.gti); ------------- PR: https://git.openjdk.org/jdk/pull/10416