@Override void visitGenericArrayType(GenericArrayType t) { result.set(t.getGenericComponentType()); }
@Override void visitGenericArrayType(GenericArrayType t) { result.set(t.getGenericComponentType()); }
/** * Learn whether {@code t} equals {@code a}. * @param a LHS * @param t RHS * @return boolean * @since 3.2 */ private static boolean equals(final GenericArrayType a, final Type t) { return t instanceof GenericArrayType && equals(a.getGenericComponentType(), ((GenericArrayType) t).getGenericComponentType()); }
private boolean isSupertypeOfArray(GenericArrayType subtype) { if (runtimeType instanceof Class) { Class<?> thisClass = (Class<?>) runtimeType; if (!thisClass.isArray()) { return thisClass.isAssignableFrom(Object[].class); } return of(subtype.getGenericComponentType()).isSubtypeOf(thisClass.getComponentType()); } else if (runtimeType instanceof GenericArrayType) { return of(subtype.getGenericComponentType()) .isSubtypeOf(((GenericArrayType) runtimeType).getGenericComponentType()); } else { return false; } }
@Override void visitGenericArrayType(GenericArrayType t) { result.set(t.getGenericComponentType()); }
@Override void visitGenericArrayType(GenericArrayType fromArrayType) { if (to instanceof WildcardType) { return; // Okay to say A[] is <?> } Type componentType = Types.getComponentType(to); checkArgument(componentType != null, "%s is not an array type.", to); populateTypeMappings(mappings, fromArrayType.getGenericComponentType(), componentType); }
@Override public boolean equals(Object obj) { if (obj instanceof GenericArrayType) { GenericArrayType that = (GenericArrayType) obj; return Objects.equal(getGenericComponentType(), that.getGenericComponentType()); } return false; }
private boolean isSubtypeOfArrayType(GenericArrayType supertype) { if (runtimeType instanceof Class) { Class<?> fromClass = (Class<?>) runtimeType; if (!fromClass.isArray()) { return false; } return of(fromClass.getComponentType()).isSubtypeOf(supertype.getGenericComponentType()); } else if (runtimeType instanceof GenericArrayType) { GenericArrayType fromArrayType = (GenericArrayType) runtimeType; return of(fromArrayType.getGenericComponentType()) .isSubtypeOf(supertype.getGenericComponentType()); } else { return false; } }
/** * Returns the element type of {@code type} if it is an array type, or null if it is not an * array type. */ static Type arrayComponentType(Type type) { if (type instanceof GenericArrayType) { return ((GenericArrayType) type).getGenericComponentType(); } else if (type instanceof Class) { return ((Class<?>) type).getComponentType(); } else { return null; } } }
/** * Get the array component type of {@code type}. * @param type the type to be checked * @return component type or null if type is not an array type */ public static Type getArrayComponentType(final Type type) { if (type instanceof Class<?>) { final Class<?> clazz = (Class<?>) type; return clazz.isArray() ? clazz.getComponentType() : null; } if (type instanceof GenericArrayType) { return ((GenericArrayType) type).getGenericComponentType(); } return null; }
@Override public boolean equals(Object obj) { if (!(obj instanceof GenericArrayType)) return false; return componentType.equals(((GenericArrayType)obj).getGenericComponentType()); }
public static Class<?> getGenericClass(Class<?> cls, int i) { try { ParameterizedType parameterizedType = ((ParameterizedType) cls.getGenericInterfaces()[0]); Object genericClass = parameterizedType.getActualTypeArguments()[i]; if (genericClass instanceof ParameterizedType) { // handle nested generic type return (Class<?>) ((ParameterizedType) genericClass).getRawType(); } else if (genericClass instanceof GenericArrayType) { // handle array generic type return (Class<?>) ((GenericArrayType) genericClass).getGenericComponentType(); } else if (((Class) genericClass).isArray()) { // Requires JDK 7 or higher, Foo<int[]> is no longer GenericArrayType return ((Class) genericClass).getComponentType(); } else { return (Class<?>) genericClass; } } catch (Throwable e) { throw new IllegalArgumentException(cls.getName() + " generic type undefined!", e); } }
public static Class<?> getGenericClass(Class<?> cls, int i) { try { ParameterizedType parameterizedType = ((ParameterizedType) cls.getGenericInterfaces()[0]); Object genericClass = parameterizedType.getActualTypeArguments()[i]; if (genericClass instanceof ParameterizedType) { // handle nested generic type return (Class<?>) ((ParameterizedType) genericClass).getRawType(); } else if (genericClass instanceof GenericArrayType) { // handle array generic type return (Class<?>) ((GenericArrayType) genericClass).getGenericComponentType(); } else if (((Class) genericClass).isArray()) { // Requires JDK 7 or higher, Foo<int[]> is no longer GenericArrayType return ((Class) genericClass).getComponentType(); } else { return (Class<?>) genericClass; } } catch (Throwable e) { throw new IllegalArgumentException(cls.getName() + " generic type undefined!", e); } }
@Override void visitGenericArrayType(GenericArrayType t) { result.set(t.getGenericComponentType()); }
@Override public boolean equals(Object o) { if (o instanceof GenericArrayType) { GenericArrayType that = (GenericArrayType) o; Type thatComponentType = that.getGenericComponentType(); return genericComponentType.equals(thatComponentType); } else return false; }
public boolean isArrayButNotByteArray(Type t) { if (t instanceof Class) { Class c = (Class) t; return c.isArray() && c != byte[].class; } if (t instanceof GenericArrayType) { t = ((GenericArrayType) t).getGenericComponentType(); return t != Byte.TYPE; } return false; }
public static Class<?> getGenericClass(Class<?> cls, int i) { try { ParameterizedType parameterizedType = ((ParameterizedType) cls.getGenericInterfaces()[0]); Object genericClass = parameterizedType.getActualTypeArguments()[i]; if (genericClass instanceof ParameterizedType) { return (Class<?>) ((ParameterizedType) genericClass).getRawType(); } else if (genericClass instanceof GenericArrayType) { Type type = ((GenericArrayType) genericClass).getGenericComponentType(); if (type instanceof TypeVariable) { return type.getClass(); } return (((GenericArrayType) genericClass).getGenericComponentType() instanceof Class<?>) ? (Class<?>) ((GenericArrayType) genericClass).getGenericComponentType() : ((GenericArrayType) genericClass).getGenericComponentType().getClass(); } else if (genericClass != null) { if (genericClass instanceof TypeVariable) { return genericClass.getClass(); } return (Class<?>) genericClass; } } catch (Throwable e) { } if (cls.getSuperclass() != null) { return getGenericClass(cls.getSuperclass(), i); } else { throw new IllegalArgumentException(cls.getName() + " generic type undefined!"); } }
public static Class<?> getGenericClass(Class<?> cls, int i) { try { ParameterizedType parameterizedType = ((ParameterizedType) cls.getGenericInterfaces()[0]); Object genericClass = parameterizedType.getActualTypeArguments()[i]; if (genericClass instanceof ParameterizedType) { return (Class<?>) ((ParameterizedType) genericClass).getRawType(); } else if (genericClass instanceof GenericArrayType) { Type type = ((GenericArrayType) genericClass).getGenericComponentType(); if (type instanceof TypeVariable) { return type.getClass(); } return (((GenericArrayType) genericClass).getGenericComponentType() instanceof Class<?>) ? (Class<?>) ((GenericArrayType) genericClass).getGenericComponentType() : ((GenericArrayType) genericClass).getGenericComponentType().getClass(); } else if (genericClass != null) { if (genericClass instanceof TypeVariable) { return genericClass.getClass(); } return (Class<?>) genericClass; } } catch (Throwable e) { } if (cls.getSuperclass() != null) { return getGenericClass(cls.getSuperclass(), i); } else { throw new IllegalArgumentException(cls.getName() + " generic type undefined!"); } }
/** * Format a {@link GenericArrayType} as a {@link String}. * @param g {@code GenericArrayType} to format * @return String * @since 3.2 */ private static String genericArrayTypeToString(final GenericArrayType g) { return String.format("%s[]", toString(g.getGenericComponentType())); }
public Type getComponentType(Type t) { if (t instanceof Class) { Class c = (Class) t; return c.getComponentType(); } if (t instanceof GenericArrayType) { return ((GenericArrayType) t).getGenericComponentType(); } throw new IllegalArgumentException(); }