public static boolean isSubtypeUnchecked(final Type t, final Type s) { if (t.isArray() && s.isArray()) { if (t.getElementType().isPrimitive()) { return isSameType(elementType(t), elementType(s)); } return isSubtypeUnchecked(elementType(t), elementType(s)); } else if (isSubtype(t, s)) { return true; } else if (t.isGenericParameter()) { return isSubtypeUnchecked(t.getExtendsBound(), s); } else if (s.isGenericParameter()) { return isSubtypeUnchecked(t, s.getExtendsBound()); } else if (s.isGenericType() && !s.isGenericTypeDefinition()) { final Type t2 = asSuper(t, s); if (t2 != null) { return true; } } return false; }
public static boolean isSubtypeUnchecked(final Type t, final Type s) { if (t.isArray() && s.isArray()) { if (t.getElementType().isPrimitive()) { return isSameType(elementType(t), elementType(s)); } return isSubtypeUnchecked(elementType(t), elementType(s)); } else if (isSubtype(t, s)) { return true; } else if (t.isGenericParameter()) { return isSubtypeUnchecked(t.getExtendsBound(), s); } else if (s.isGenericParameter()) { return isSubtypeUnchecked(t, s.getExtendsBound()); } else if (s.isGenericType() && !s.isGenericTypeDefinition()) { final Type t2 = asSuper(t, s); if (t2 != null) { return true; } } return false; }
public static boolean isSubtypeUnchecked(final Type t, final Type s) { if (t.isArray() && s.isArray()) { if (t.getElementType().isPrimitive()) { return isSameType(elementType(t), elementType(s)); } return isSubtypeUnchecked(elementType(t), elementType(s)); } else if (isSubtype(t, s)) { return true; } else if (t.isGenericParameter()) { return isSubtypeUnchecked(t.getExtendsBound(), s); } else if (s.isGenericParameter()) { return isSubtypeUnchecked(t, s.getExtendsBound()); } else if (s.isGenericType() && !s.isGenericTypeDefinition()) { final Type t2 = asSuper(t, s); if (t2 != null) { return true; } } return false; }
public static boolean isConvertible(final Type sourceType, final Type targetType) { final boolean tPrimitive = sourceType.isPrimitive(); final boolean sPrimitive = targetType.isPrimitive(); if (sourceType == Type.NullType) { return !targetType.isPrimitive(); } if (targetType == Types.Object) { return true; } if (targetType.isGenericParameter()) { return isConvertible(sourceType, targetType.getExtendsBound()); } if (tPrimitive == sPrimitive) { return isSubtypeUnchecked(sourceType, targetType); } return tPrimitive ? isSubtype(TypeUtils.getBoxedTypeOrSelf(sourceType), targetType) : isSubtype(TypeUtils.getUnderlyingPrimitiveOrSelf(sourceType), targetType); }
public static boolean isConvertible(final Type sourceType, final Type targetType) { final boolean tPrimitive = sourceType.isPrimitive(); final boolean sPrimitive = targetType.isPrimitive(); if (sourceType == Type.NullType) { return !targetType.isPrimitive(); } if (targetType == Types.Object) { return true; } if (targetType.isGenericParameter()) { return isConvertible(sourceType, targetType.getExtendsBound()); } if (tPrimitive == sPrimitive) { return isSubtypeUnchecked(sourceType, targetType); } return tPrimitive ? isSubtype(TypeUtils.getBoxedTypeOrSelf(sourceType), targetType) : isSubtype(TypeUtils.getUnderlyingPrimitiveOrSelf(sourceType), targetType); }
public static boolean isConvertible(final Type sourceType, final Type targetType) { final boolean tPrimitive = sourceType.isPrimitive(); final boolean sPrimitive = targetType.isPrimitive(); if (sourceType == Type.NullType) { return !targetType.isPrimitive(); } if (targetType == Types.Object) { return true; } if (targetType.isGenericParameter()) { return isConvertible(sourceType, targetType.getExtendsBound()); } if (tPrimitive == sPrimitive) { return isSubtypeUnchecked(sourceType, targetType); } return tPrimitive ? isSubtype(TypeUtils.getBoxedTypeOrSelf(sourceType), targetType) : isSubtype(TypeUtils.getUnderlyingPrimitiveOrSelf(sourceType), targetType); }