diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/types/RecordType.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/types/RecordType.java index 7988e993a..9c5c83ed7 100644 --- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/types/RecordType.java +++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/types/RecordType.java @@ -65,7 +65,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(super.hashCode(), fieldNames); + return Objects.hash(super.hashCode(), Arrays.hashCode(fieldNames)); } @Override diff --git a/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/types/RecordTypeTest.java b/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/types/RecordTypeTest.java index 7fccc2e1b..80badc9e0 100644 --- a/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/types/RecordTypeTest.java +++ b/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/types/RecordTypeTest.java @@ -22,6 +22,7 @@ import org.apache.wayang.core.types.DataSetType; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -45,4 +46,13 @@ void testSupertype() { assertTrue(t3.isSupertypeOf(t3)); assertFalse(t3.isSupertypeOf(t2)); } + + @Test + void testEqualInstancesHaveSameHashCode() { + RecordType rt1 = new RecordType("x", "y", "z"); + RecordType rt2 = new RecordType("x", "y", "z"); + + assertEquals(rt1, rt2); + assertEquals(rt1.hashCode(), rt2.hashCode()); + } }