mirror of
https://github.com/fankes/moshi.git
synced 2025-10-19 16:09:21 +08:00
Fix Types.equals for arrays. (#279)
This commit is contained in:
committed by
Jesse Wilson
parent
e76110b4b1
commit
d95dd07c56
@@ -210,6 +210,10 @@ public final class Types {
|
|||||||
return true; // Also handles (a == null && b == null).
|
return true; // Also handles (a == null && b == null).
|
||||||
|
|
||||||
} else if (a instanceof Class) {
|
} else if (a instanceof Class) {
|
||||||
|
if (b instanceof GenericArrayType) {
|
||||||
|
return equals(((Class) a).getComponentType(),
|
||||||
|
((GenericArrayType) b).getGenericComponentType());
|
||||||
|
}
|
||||||
return a.equals(b); // Class already specifies equals().
|
return a.equals(b); // Class already specifies equals().
|
||||||
|
|
||||||
} else if (a instanceof ParameterizedType) {
|
} else if (a instanceof ParameterizedType) {
|
||||||
@@ -227,6 +231,10 @@ public final class Types {
|
|||||||
&& Arrays.equals(aTypeArguments, bTypeArguments);
|
&& Arrays.equals(aTypeArguments, bTypeArguments);
|
||||||
|
|
||||||
} else if (a instanceof GenericArrayType) {
|
} else if (a instanceof GenericArrayType) {
|
||||||
|
if (b instanceof Class) {
|
||||||
|
return equals(((Class) b).getComponentType(),
|
||||||
|
((GenericArrayType) a).getGenericComponentType());
|
||||||
|
}
|
||||||
if (!(b instanceof GenericArrayType)) return false;
|
if (!(b instanceof GenericArrayType)) return false;
|
||||||
GenericArrayType ga = (GenericArrayType) a;
|
GenericArrayType ga = (GenericArrayType) a;
|
||||||
GenericArrayType gb = (GenericArrayType) b;
|
GenericArrayType gb = (GenericArrayType) b;
|
||||||
|
@@ -220,4 +220,11 @@ public final class TypesTest {
|
|||||||
assertThat(actual.hashCode()).isEqualTo(expected.hashCode());
|
assertThat(actual.hashCode()).isEqualTo(expected.hashCode());
|
||||||
assertThat(actual.getClass()).isNotEqualTo(TestQualifier.class);
|
assertThat(actual.getClass()).isNotEqualTo(TestQualifier.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test public void arrayEqualsGenericTypeArray() {
|
||||||
|
assertThat(Types.equals(int[].class, Types.arrayOf(int.class))).isTrue();
|
||||||
|
assertThat(Types.equals(Types.arrayOf(int.class), int[].class)).isTrue();
|
||||||
|
assertThat(Types.equals(String[].class, Types.arrayOf(String.class))).isTrue();
|
||||||
|
assertThat(Types.equals(Types.arrayOf(String.class), String[].class)).isTrue();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user