public JavaType getParametrizedTypeType(JavaSymbol.TypeJavaSymbol symbol, TypeSubstitution typeSubstitution) { if (symbol.getType().isUnknown()) { return symbol.getType(); } if (typeCache.get(symbol) == null) { Map<TypeSubstitution, JavaType.ParametrizedTypeJavaType> map = Maps.newHashMap(); typeCache.put(symbol, map); } if (typeCache.get(symbol).get(typeSubstitution) == null) { typeCache.get(symbol).put(typeSubstitution, new JavaType.ParametrizedTypeJavaType(symbol, typeSubstitution)); } return typeCache.get(symbol).get(typeSubstitution); }
public JavaType getParametrizedTypeType(JavaSymbol.TypeJavaSymbol symbol, TypeSubstitution typeSubstitution) { if (symbol.getType().isTagged(JavaType.UNKNOWN)) { return symbol.getType(); } if (typeCache.get(symbol) == null) { Map<TypeSubstitution, JavaType.ParametrizedTypeJavaType> map = Maps.newHashMap(); typeCache.put(symbol, map); } if (typeCache.get(symbol).get(typeSubstitution) == null) { typeCache.get(symbol).put(typeSubstitution, new JavaType.ParametrizedTypeJavaType(symbol, typeSubstitution)); } return typeCache.get(symbol).get(typeSubstitution); }
@CheckForNull private Type getFirstTypeParameter(Type type) { if (type instanceof JavaType.ParametrizedTypeJavaType) { JavaType.ParametrizedTypeJavaType parametrizedTypeType = (JavaType.ParametrizedTypeJavaType) type; for (JavaType.TypeVariableJavaType variableType : parametrizedTypeType.typeParameters()) { return parametrizedTypeType.substitution(variableType); } } return null; }
@Override public boolean isSubtypeOf(Type superType) { if (erasure().isSubtypeOf(superType.erasure())) { boolean superTypeIsParametrizedJavaType = superType instanceof ParametrizedTypeJavaType; if (superTypeIsParametrizedJavaType) { return checkSubstitutedTypesCompatibility((ParametrizedTypeJavaType) superType); } return !superTypeIsParametrizedJavaType; } return false; }
@Nullable private Type getFirstTypeParameter(ParametrizedTypeJavaType parametrizedTypeType) { for (TypeVariableJavaType variableType : parametrizedTypeType.typeParameters()) { return parametrizedTypeType.substitution(variableType); } return null; }