From 4e4c4151acf26cf790eeaa9ae47e220fdf3bdb47 Mon Sep 17 00:00:00 2001 From: extio-de Date: Sat, 20 Dec 2025 17:07:27 +0100 Subject: [PATCH] Refactor code to use pattern matching for instanceof and simplify hashCode and equals methods --- .../renderer/container/EnhancedWindow.java | 4 +- .../g2d/bo/rendering/G2DDrawImage.java | 8 +--- .../game_engine/renderer/model/RgbaColor.java | 38 +++---------------- .../game_engine/spatial2/model/Area2.java | 28 +++----------- .../spatial2/model/Coord2Conversion.java | 24 ++++++------ .../game_engine/spatial2/model/Edge2.java | 36 ++++++------------ .../spatial2/model/ImmutableCoordD2.java | 15 +++----- .../spatial2/model/ImmutableCoordI2.java | 8 ++-- .../spatial2/model/MutableCoordD2.java | 11 ++---- .../spatial2/model/MutableCoordI2.java | 8 ++-- .../game_engine/spatial2/model/Point2.java | 26 +++---------- .../game_engine/spatial2/model/RectI2.java | 37 +++++------------- 12 files changed, 67 insertions(+), 176 deletions(-) diff --git a/src/main/java/de/extio/game_engine/renderer/container/EnhancedWindow.java b/src/main/java/de/extio/game_engine/renderer/container/EnhancedWindow.java index 325d442..28b3363 100644 --- a/src/main/java/de/extio/game_engine/renderer/container/EnhancedWindow.java +++ b/src/main/java/de/extio/game_engine/renderer/container/EnhancedWindow.java @@ -38,8 +38,8 @@ public class EnhancedWindow extends Window { synchronized (WINDOWS) { for (final Window window : WINDOWS) { - if (window instanceof EnhancedWindow) { - window.reset(); + if (window instanceof final EnhancedWindow enhancedWindow) { + enhancedWindow.reset(); } } } diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawImage.java b/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawImage.java index 5ab18c2..28792e2 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawImage.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/bo/rendering/G2DDrawImage.java @@ -206,13 +206,7 @@ public class G2DDrawImage extends G2DAbstractRenderingBo implements DrawImageRen @Override public String toString() { - final var builder = new StringBuilder(); - builder.append("CachedImage [name="); - builder.append(this.name); - builder.append(", used="); - builder.append(this.used); - builder.append("]"); - return builder.toString(); + return "CachedImage [name=" + this.name + ", used=" + this.used + "]"; } } diff --git a/src/main/java/de/extio/game_engine/renderer/model/RgbaColor.java b/src/main/java/de/extio/game_engine/renderer/model/RgbaColor.java index f6607f7..54fd7f4 100644 --- a/src/main/java/de/extio/game_engine/renderer/model/RgbaColor.java +++ b/src/main/java/de/extio/game_engine/renderer/model/RgbaColor.java @@ -1,6 +1,7 @@ package de.extio.game_engine.renderer.model; import java.awt.Color; +import java.util.Objects; public class RgbaColor { @@ -166,13 +167,7 @@ public class RgbaColor { @Override public int hashCode() { - final var prime = 31; - var result = 1; - result = prime * result + this.a; - result = prime * result + this.b; - result = prime * result + this.g; - result = prime * result + this.r; - return result; + return Objects.hash(this.r, this.g, this.b, this.a); } @Override @@ -180,38 +175,15 @@ public class RgbaColor { if (this == obj) { return true; } - if ((obj == null) || (this.getClass() != obj.getClass())) { + if (!(obj instanceof final RgbaColor other)) { return false; } - final var other = (RgbaColor) obj; - if (this.a != other.a) { - return false; - } - if (this.b != other.b) { - return false; - } - if (this.g != other.g) { - return false; - } - if (this.r != other.r) { - return false; - } - return true; + return this.r == other.r && this.g == other.g && this.b == other.b && this.a == other.a; } @Override public String toString() { - final var builder = new StringBuilder(); - builder.append("RgbaColor [r="); - builder.append(this.r); - builder.append(", g="); - builder.append(this.g); - builder.append(", b="); - builder.append(this.b); - builder.append(", a="); - builder.append(this.a); - builder.append("]"); - return builder.toString(); + return "RgbaColor [r=" + this.r + ", g=" + this.g + ", b=" + this.b + ", a=" + this.a + "]"; } } diff --git a/src/main/java/de/extio/game_engine/spatial2/model/Area2.java b/src/main/java/de/extio/game_engine/spatial2/model/Area2.java index 36a75b2..4a6c747 100644 --- a/src/main/java/de/extio/game_engine/spatial2/model/Area2.java +++ b/src/main/java/de/extio/game_engine/spatial2/model/Area2.java @@ -1,5 +1,7 @@ package de.extio.game_engine.spatial2.model; +import java.util.Objects; + /** * A 2D area, having a position (top left corner) and a dimension */ @@ -44,10 +46,7 @@ public class Area2 extends Point2 implements HasPositionAndDimension2, SpatialIn @Override public int hashCode() { - final var prime = 31; - var result = super.hashCode(); - result = prime * result + ((this.dimension == null) ? 0 : this.dimension.hashCode()); - return result; + return Objects.hash(super.hashCode(), this.dimension); } @Override @@ -55,30 +54,15 @@ public class Area2 extends Point2 implements HasPositionAndDimension2, SpatialIn if (this == obj) { return true; } - if (!super.equals(obj)) { + if (!super.equals(obj) || !(obj instanceof final Area2 other)) { return false; } - final var other = (Area2) obj; - if (this.dimension == null) { - if (other.dimension != null) { - return false; - } - } - else if (!this.dimension.equals(other.dimension)) { - return false; - } - return true; + return Objects.equals(this.dimension, other.dimension); } @Override public String toString() { - final var builder = new StringBuilder(); - builder.append("Area2 [getPosition()="); - builder.append(this.getPosition()); - builder.append(", dimension="); - builder.append(this.dimension); - builder.append("]"); - return builder.toString(); + return "Area2 [getPosition()=" + this.getPosition() + ", dimension=" + this.dimension + "]"; } } diff --git a/src/main/java/de/extio/game_engine/spatial2/model/Coord2Conversion.java b/src/main/java/de/extio/game_engine/spatial2/model/Coord2Conversion.java index ce2189e..ffeca7b 100644 --- a/src/main/java/de/extio/game_engine/spatial2/model/Coord2Conversion.java +++ b/src/main/java/de/extio/game_engine/spatial2/model/Coord2Conversion.java @@ -8,8 +8,8 @@ import de.extio.game_engine.spatial2.WorldUtils2; public interface Coord2Conversion { default CoordI2 toMutableCoordI2() { - if (this instanceof CoordI2) { - return MutableCoordI2.create((CoordI2) this); + if (this instanceof final CoordI2 coordI2) { + return MutableCoordI2.create(coordI2); } else { return MutableCoordI2.create((CoordD2) this); @@ -17,8 +17,8 @@ public interface Coord2Conversion { } default CoordI2 toImmutableCoordI2() { - if (this instanceof CoordI2) { - return ImmutableCoordI2.create((CoordI2) this); + if (this instanceof final CoordI2 coordI2) { + return ImmutableCoordI2.create(coordI2); } else { return ImmutableCoordI2.create((CoordD2) this); @@ -26,8 +26,8 @@ public interface Coord2Conversion { } default CoordD2 toMutableCoordD2() { - if (this instanceof CoordI2) { - return MutableCoordD2.create((CoordI2) this); + if (this instanceof final CoordI2 coordI2) { + return MutableCoordD2.create(coordI2); } else { return MutableCoordD2.create((CoordD2) this); @@ -35,8 +35,8 @@ public interface Coord2Conversion { } default CoordD2 toImmutableCoordD2() { - if (this instanceof CoordI2) { - return ImmutableCoordD2.create((CoordI2) this); + if (this instanceof final CoordI2 coordI2) { + return ImmutableCoordD2.create(coordI2); } else { return ImmutableCoordD2.create((CoordD2) this); @@ -49,11 +49,11 @@ public interface Coord2Conversion { default CoordD2 toVNorm() { CoordD2 vNorm; - if (this instanceof ImmutableCoordI2) { - vNorm = ImmutableCoordD2.create((ImmutableCoordI2) this); + if (this instanceof final ImmutableCoordI2 immutableCoordI2) { + vNorm = ImmutableCoordD2.create(immutableCoordI2); } - else if (this instanceof MutableCoordI2) { - vNorm = MutableCoordD2.create((MutableCoordI2) this); + else if (this instanceof final MutableCoordI2 mutableCoordI2) { + vNorm = MutableCoordD2.create(mutableCoordI2); } else { vNorm = (CoordD2) this; diff --git a/src/main/java/de/extio/game_engine/spatial2/model/Edge2.java b/src/main/java/de/extio/game_engine/spatial2/model/Edge2.java index 4364fa7..c3f38f8 100644 --- a/src/main/java/de/extio/game_engine/spatial2/model/Edge2.java +++ b/src/main/java/de/extio/game_engine/spatial2/model/Edge2.java @@ -86,18 +86,12 @@ public enum Edge2 { * @return Vector */ public static CoordD2 toVectorD(final Edge2 edge2) { - switch (edge2) { - case BOTTOM: - return VD_BOTTOM; - case LEFT: - return VD_LEFT; - case RIGHT: - return VD_RIGHT; - case TOP: - return VD_TOP; - } - - return null; + return switch (edge2) { + case BOTTOM -> VD_BOTTOM; + case LEFT -> VD_LEFT; + case RIGHT -> VD_RIGHT; + case TOP -> VD_TOP; + }; } /** @@ -106,18 +100,12 @@ public enum Edge2 { * @return Vector */ public static CoordI2 toVectorI(final Edge2 edge2) { - switch (edge2) { - case BOTTOM: - return VI_BOTTOM; - case LEFT: - return VI_LEFT; - case RIGHT: - return VI_RIGHT; - case TOP: - return VI_TOP; - } - - return null; + return switch (edge2) { + case BOTTOM -> VI_BOTTOM; + case LEFT -> VI_LEFT; + case RIGHT -> VI_RIGHT; + case TOP -> VI_TOP; + }; } public static String toString(final int edges) { diff --git a/src/main/java/de/extio/game_engine/spatial2/model/ImmutableCoordD2.java b/src/main/java/de/extio/game_engine/spatial2/model/ImmutableCoordD2.java index 36936a5..9f28126 100644 --- a/src/main/java/de/extio/game_engine/spatial2/model/ImmutableCoordD2.java +++ b/src/main/java/de/extio/game_engine/spatial2/model/ImmutableCoordD2.java @@ -1,5 +1,7 @@ package de.extio.game_engine.spatial2.model; +import java.util.Objects; + /** * Immutable implementation of CoordD2 */ @@ -25,8 +27,8 @@ public final class ImmutableCoordD2 implements CoordD2 { if (other == null) { return null; } - if (other instanceof ImmutableCoordD2) { - return (ImmutableCoordD2) other; + if (other instanceof final ImmutableCoordD2 immutableCoordD2) { + return immutableCoordD2; } return new ImmutableCoordD2(other.getX(), other.getY()); } @@ -149,14 +151,7 @@ public final class ImmutableCoordD2 implements CoordD2 { @Override public int hashCode() { - final var prime = 31; - var result = 1; - long temp; - temp = Double.doubleToLongBits(this.x); - result = prime * result + (int) (temp ^ (temp >>> 32)); - temp = Double.doubleToLongBits(this.y); - result = prime * result + (int) (temp ^ (temp >>> 32)); - return result; + return Objects.hash(this.x, this.y); } @Override diff --git a/src/main/java/de/extio/game_engine/spatial2/model/ImmutableCoordI2.java b/src/main/java/de/extio/game_engine/spatial2/model/ImmutableCoordI2.java index e9f47ef..846195e 100644 --- a/src/main/java/de/extio/game_engine/spatial2/model/ImmutableCoordI2.java +++ b/src/main/java/de/extio/game_engine/spatial2/model/ImmutableCoordI2.java @@ -1,5 +1,7 @@ package de.extio.game_engine.spatial2.model; +import java.util.Objects; + /** * Immutable implementation of CoordI2 */ @@ -180,11 +182,7 @@ public final class ImmutableCoordI2 implements CoordI2 { @Override public int hashCode() { - final var prime = 31; - var result = 1; - result = prime * result + this.x; - result = prime * result + this.y; - return result; + return Objects.hash(this.x, this.y); } @Override diff --git a/src/main/java/de/extio/game_engine/spatial2/model/MutableCoordD2.java b/src/main/java/de/extio/game_engine/spatial2/model/MutableCoordD2.java index e39e70f..1b22f2c 100644 --- a/src/main/java/de/extio/game_engine/spatial2/model/MutableCoordD2.java +++ b/src/main/java/de/extio/game_engine/spatial2/model/MutableCoordD2.java @@ -1,5 +1,7 @@ package de.extio.game_engine.spatial2.model; +import java.util.Objects; + /** * Immutable implementation of CoordD2 */ @@ -178,14 +180,7 @@ public final class MutableCoordD2 implements CoordD2 { @Override public int hashCode() { - final var prime = 31; - var result = 1; - long temp; - temp = Double.doubleToLongBits(this.x); - result = prime * result + (int) (temp ^ (temp >>> 32)); - temp = Double.doubleToLongBits(this.y); - result = prime * result + (int) (temp ^ (temp >>> 32)); - return result; + return Objects.hash(this.x, this.y); } @Override diff --git a/src/main/java/de/extio/game_engine/spatial2/model/MutableCoordI2.java b/src/main/java/de/extio/game_engine/spatial2/model/MutableCoordI2.java index 7543d3d..168d123 100644 --- a/src/main/java/de/extio/game_engine/spatial2/model/MutableCoordI2.java +++ b/src/main/java/de/extio/game_engine/spatial2/model/MutableCoordI2.java @@ -1,5 +1,7 @@ package de.extio.game_engine.spatial2.model; +import java.util.Objects; + /** * Immutable implementation of CoordI2 */ @@ -178,11 +180,7 @@ public final class MutableCoordI2 implements CoordI2 { @Override public int hashCode() { - final var prime = 31; - var result = 1; - result = prime * result + this.x; - result = prime * result + this.y; - return result; + return Objects.hash(this.x, this.y); } @Override diff --git a/src/main/java/de/extio/game_engine/spatial2/model/Point2.java b/src/main/java/de/extio/game_engine/spatial2/model/Point2.java index 746e9e8..004208c 100644 --- a/src/main/java/de/extio/game_engine/spatial2/model/Point2.java +++ b/src/main/java/de/extio/game_engine/spatial2/model/Point2.java @@ -1,5 +1,7 @@ package de.extio.game_engine.spatial2.model; +import java.util.Objects; + /** * A point in 2D space */ @@ -26,10 +28,7 @@ public class Point2 implements HasPosition2 { @Override public int hashCode() { - final var prime = 31; - var result = 1; - result = prime * result + ((this.coord == null) ? 0 : this.coord.hashCode()); - return result; + return Objects.hash(this.coord); } @Override @@ -37,28 +36,15 @@ public class Point2 implements HasPosition2 { if (this == obj) { return true; } - if ((obj == null) || (this.getClass() != obj.getClass())) { + if (!(obj instanceof final Point2 other)) { return false; } - final var other = (Point2) obj; - if (this.coord == null) { - if (other.coord != null) { - return false; - } - } - else if (!this.coord.equals(other.coord)) { - return false; - } - return true; + return Objects.equals(this.coord, other.coord); } @Override public String toString() { - final var builder = new StringBuilder(); - builder.append("Point2 [coord="); - builder.append(this.coord); - builder.append("]"); - return builder.toString(); + return "Point2 [coord=" + this.coord + "]"; } } diff --git a/src/main/java/de/extio/game_engine/spatial2/model/RectI2.java b/src/main/java/de/extio/game_engine/spatial2/model/RectI2.java index 546886d..64afbe6 100644 --- a/src/main/java/de/extio/game_engine/spatial2/model/RectI2.java +++ b/src/main/java/de/extio/game_engine/spatial2/model/RectI2.java @@ -1,5 +1,7 @@ package de.extio.game_engine.spatial2.model; +import java.util.Objects; + /** * A rectangle represented by top left (c0) and bottom right (c1) vertices */ @@ -23,16 +25,16 @@ public class RectI2 { return; } if (other.c0 != null) { - if (other.c0 instanceof ImmutableCoordI2) { - this.c0 = ImmutableCoordI2.create(other.c0); + if (other.c0 instanceof final ImmutableCoordI2 immutableC0) { + this.c0 = ImmutableCoordI2.create(immutableC0); } else { this.c0 = MutableCoordI2.create(other.c0); } } if (other.c1 != null) { - if (other.c1 instanceof ImmutableCoordI2) { - this.c1 = ImmutableCoordI2.create(other.c1); + if (other.c1 instanceof final ImmutableCoordI2 immutableC1) { + this.c1 = ImmutableCoordI2.create(immutableC1); } else { this.c1 = MutableCoordI2.create(other.c1); @@ -58,11 +60,7 @@ public class RectI2 { @Override public int hashCode() { - final var prime = 31; - var result = 1; - result = prime * result + ((this.c0 == null) ? 0 : this.c0.hashCode()); - result = prime * result + ((this.c1 == null) ? 0 : this.c1.hashCode()); - return result; + return Objects.hash(this.c0, this.c1); } @Override @@ -70,27 +68,10 @@ public class RectI2 { if (this == obj) { return true; } - if ((obj == null) || (this.getClass() != obj.getClass())) { + if (!(obj instanceof final RectI2 other)) { return false; } - final var other = (RectI2) obj; - if (this.c0 == null) { - if (other.c0 != null) { - return false; - } - } - else if (!this.c0.equals(other.c0)) { - return false; - } - if (this.c1 == null) { - if (other.c1 != null) { - return false; - } - } - else if (!this.c1.equals(other.c1)) { - return false; - } - return true; + return Objects.equals(this.c0, other.c0) && Objects.equals(this.c1, other.c1); } @Override