public static boolean isSubType(final TypeReference type, final TypeReference baseType, final boolean capture) { if (type == baseType) { return true; } if (type == null || baseType == null) { return false; } if (baseType instanceof CompoundTypeReference) { final CompoundTypeReference c = (CompoundTypeReference) baseType; if (!isSubType(type, getSuperType(c), capture)) { return false; } for (final TypeReference interfaceType : c.getInterfaces()) { if (!isSubType(type, interfaceType, capture)) { return false; } } return true; } final TypeReference lower = getLowerBound(baseType); if (lower != baseType) { return isSubType(capture ? capture(type) : type, lower, false); } return IS_SUBTYPE_VISITOR.visit(capture ? capture(type) : type, baseType); }
public static boolean isSubType(final TypeReference type, final TypeReference baseType, final boolean capture) { if (type == baseType) { return true; } if (type == null || baseType == null) { return false; } if (baseType instanceof CompoundTypeReference) { final CompoundTypeReference c = (CompoundTypeReference) baseType; if (!isSubType(type, getSuperType(c), capture)) { return false; } for (final TypeReference interfaceType : c.getInterfaces()) { if (!isSubType(type, interfaceType, capture)) { return false; } } return true; } final TypeReference lower = getLowerBound(baseType); if (lower != baseType) { return isSubType(capture ? capture(type) : type, lower, false); } return IS_SUBTYPE_VISITOR.visit(capture ? capture(type) : type, baseType); }
public static boolean isSubType(final TypeReference type, final TypeReference baseType, final boolean capture) { if (type == baseType) { return true; } if (type == null || baseType == null) { return false; } if (baseType instanceof CompoundTypeReference) { final CompoundTypeReference c = (CompoundTypeReference) baseType; if (!isSubType(type, getSuperType(c), capture)) { return false; } for (final TypeReference interfaceType : c.getInterfaces()) { if (!isSubType(type, interfaceType, capture)) { return false; } } return true; } final TypeReference lower = getLowerBound(baseType); if (lower != baseType) { return isSubType(capture ? capture(type) : type, lower, false); } return IS_SUBTYPE_VISITOR.visit(capture ? capture(type) : type, baseType); }