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).
|
||||
|
||||
} 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().
|
||||
|
||||
} else if (a instanceof ParameterizedType) {
|
||||
@@ -227,6 +231,10 @@ public final class Types {
|
||||
&& Arrays.equals(aTypeArguments, bTypeArguments);
|
||||
|
||||
} else if (a instanceof GenericArrayType) {
|
||||
if (b instanceof Class) {
|
||||
return equals(((Class) b).getComponentType(),
|
||||
((GenericArrayType) a).getGenericComponentType());
|
||||
}
|
||||
if (!(b instanceof GenericArrayType)) return false;
|
||||
GenericArrayType ga = (GenericArrayType) a;
|
||||
GenericArrayType gb = (GenericArrayType) b;
|
||||
|
@@ -220,4 +220,11 @@ public final class TypesTest {
|
||||
assertThat(actual.hashCode()).isEqualTo(expected.hashCode());
|
||||
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