code review fixes. Moved getFirstArgument() method from $Gson$Types to GsonTypesTest.
This commit is contained in:
parent
b373c20136
commit
14ba59fa88
|
@ -391,22 +391,6 @@ public final class $Gson$Types {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Given a parameterized type A<B,C>, returns B. If the specified type is not
|
|
||||||
* a generic type, returns null.
|
|
||||||
*/
|
|
||||||
public static Type getFirstTypeArgument(Type type) {
|
|
||||||
try {
|
|
||||||
if (!(type instanceof ParameterizedType)) return null;
|
|
||||||
ParameterizedType ptype = (ParameterizedType) type;
|
|
||||||
Type[] actualTypeArguments = ptype.getActualTypeArguments();
|
|
||||||
if (actualTypeArguments.length == 0) return null;
|
|
||||||
return canonicalize(actualTypeArguments[0]);
|
|
||||||
} catch (Exception e) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static Type resolveTypeVariable(Type context, Class<?> contextRawType, TypeVariable<?> unknown) {
|
static Type resolveTypeVariable(Type context, Class<?> contextRawType, TypeVariable<?> unknown) {
|
||||||
Class<?> declaredByRaw = declaringClassOf(unknown);
|
Class<?> declaredByRaw = declaringClassOf(unknown);
|
||||||
|
|
||||||
|
|
|
@ -788,7 +788,7 @@ public final class LinkedHashTreeMap<K, V> extends AbstractMap<K, V> implements
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class EntrySet extends AbstractSet<Entry<K, V>> {
|
final class EntrySet extends AbstractSet<Entry<K, V>> {
|
||||||
@Override public int size() {
|
@Override public int size() {
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
@ -823,7 +823,7 @@ public final class LinkedHashTreeMap<K, V> extends AbstractMap<K, V> implements
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class KeySet extends AbstractSet<K> {
|
final class KeySet extends AbstractSet<K> {
|
||||||
@Override public int size() {
|
@Override public int size() {
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
|
@ -589,7 +589,7 @@ public final class LinkedTreeMap<K, V> extends AbstractMap<K, V> implements Seri
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class KeySet extends AbstractSet<K> {
|
final class KeySet extends AbstractSet<K> {
|
||||||
@Override public int size() {
|
@Override public int size() {
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
package com.google.gson.internal;
|
package com.google.gson.internal;
|
||||||
|
|
||||||
|
import java.lang.reflect.ParameterizedType;
|
||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -26,11 +27,11 @@ public final class GsonTypesTest extends TestCase {
|
||||||
public void testNewParameterizedTypeWithoutOwner() {
|
public void testNewParameterizedTypeWithoutOwner() {
|
||||||
// List<A>. List is a top-level class
|
// List<A>. List is a top-level class
|
||||||
Type type = $Gson$Types.newParameterizedTypeWithOwner(null, List.class, A.class);
|
Type type = $Gson$Types.newParameterizedTypeWithOwner(null, List.class, A.class);
|
||||||
assertEquals(A.class, $Gson$Types.getFirstTypeArgument(type));
|
assertEquals(A.class, getFirstTypeArgument(type));
|
||||||
|
|
||||||
// A<B>. A is a static inner class.
|
// A<B>. A is a static inner class.
|
||||||
type = $Gson$Types.newParameterizedTypeWithOwner(null, A.class, B.class);
|
type = $Gson$Types.newParameterizedTypeWithOwner(null, A.class, B.class);
|
||||||
assertEquals(B.class, $Gson$Types.getFirstTypeArgument(type));
|
assertEquals(B.class, getFirstTypeArgument(type));
|
||||||
|
|
||||||
final class D {
|
final class D {
|
||||||
}
|
}
|
||||||
|
@ -41,14 +42,14 @@ public final class GsonTypesTest extends TestCase {
|
||||||
|
|
||||||
// A<D> is allowed.
|
// A<D> is allowed.
|
||||||
type = $Gson$Types.newParameterizedTypeWithOwner(null, A.class, D.class);
|
type = $Gson$Types.newParameterizedTypeWithOwner(null, A.class, D.class);
|
||||||
assertEquals(D.class, $Gson$Types.getFirstTypeArgument(type));
|
assertEquals(D.class, getFirstTypeArgument(type));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testGetFirstTypeArgument() {
|
public void testGetFirstTypeArgument() {
|
||||||
assertNull($Gson$Types.getFirstTypeArgument(A.class));
|
assertNull(getFirstTypeArgument(A.class));
|
||||||
|
|
||||||
Type type = $Gson$Types.newParameterizedTypeWithOwner(null, A.class, B.class, C.class);
|
Type type = $Gson$Types.newParameterizedTypeWithOwner(null, A.class, B.class, C.class);
|
||||||
assertEquals(B.class, $Gson$Types.getFirstTypeArgument(type));
|
assertEquals(B.class, getFirstTypeArgument(type));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final class A {
|
private static final class A {
|
||||||
|
@ -57,4 +58,21 @@ public final class GsonTypesTest extends TestCase {
|
||||||
}
|
}
|
||||||
private static final class C {
|
private static final class C {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Given a parameterized type A<B,C>, returns B. If the specified type is not
|
||||||
|
* a generic type, returns null.
|
||||||
|
*/
|
||||||
|
public static Type getFirstTypeArgument(Type type) {
|
||||||
|
try {
|
||||||
|
if (!(type instanceof ParameterizedType)) return null;
|
||||||
|
ParameterizedType ptype = (ParameterizedType) type;
|
||||||
|
Type[] actualTypeArguments = ptype.getActualTypeArguments();
|
||||||
|
if (actualTypeArguments.length == 0) return null;
|
||||||
|
return $Gson$Types.canonicalize(actualTypeArguments[0]);
|
||||||
|
} catch (Exception e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user