public TypeBindings withAdditionalBindings(final TypeBindings additionalBindings) { TypeBindings bindings = this; for (final Type parameter : additionalBindings.getGenericParameters()) { bindings = bindings.withAdditionalBinding(parameter, additionalBindings.getBoundType(parameter)); } return bindings; }
@Override public Type<?> visitClassType(final Type<?> type, final TypeBindings bindings) { if (bindings.containsGenericParameter(type)) { return bindings.getBoundType(type); } final TypeBindings oldTypeBindings = type.getTypeBindings(); final TypeBindings newTypeBindings = visitTypeBindings(oldTypeBindings, bindings); if (oldTypeBindings != newTypeBindings) { return type.getGenericTypeDefinition().makeGenericType(newTypeBindings.getBoundTypes()); } return type; }
public boolean hasUnboundParameters() { for (int i = 0, n = size(); i < n; i++) { final Type parameter = getBoundType(i); if (parameter.isGenericParameter()) { return true; } } return false; }
public boolean hasConcreteParameters() { for (int i = 0, n = size(); i < n; i++) { final Type parameter = getBoundType(i); if (!parameter.isGenericParameter()) { return true; } } return false; }
public TypeBindings withAdditionalBindings(final TypeBindings additionalBindings) { TypeBindings bindings = this; for (final Type parameter : additionalBindings.getGenericParameters()) { bindings = bindings.withAdditionalBinding(parameter, additionalBindings.getBoundType(parameter)); } return bindings; }
public boolean hasBoundParameters() { for (int i = 0, n = size(); i < n; i++) { final Type genericParameter = getGenericParameter(i); final Type parameter = getBoundType(i); if (parameter != genericParameter) { return true; } } return false; }
public boolean hasConcreteParameters() { for (int i = 0, n = size(); i < n; i++) { final Type parameter = getBoundType(i); if (!parameter.isGenericParameter()) { return true; } } return false; }
public TypeBindings withAdditionalBindings(final TypeBindings additionalBindings) { TypeBindings bindings = this; for (final Type parameter : additionalBindings.getGenericParameters()) { bindings = bindings.withAdditionalBinding(parameter, additionalBindings.getBoundType(parameter)); } return bindings; }
public boolean hasBoundParameters() { for (int i = 0, n = size(); i < n; i++) { final Type genericParameter = getGenericParameter(i); final Type parameter = getBoundType(i); if (parameter != genericParameter) { return true; } } return false; }
public boolean hasUnboundParameters() { for (int i = 0, n = size(); i < n; i++) { final Type parameter = getBoundType(i); if (parameter.isGenericParameter()) { return true; } } return false; }
public boolean hasConcreteParameters() { for (int i = 0, n = size(); i < n; i++) { final Type parameter = getBoundType(i); if (!parameter.isGenericParameter()) { return true; } } return false; }
public Type getBoundType(final Type genericParameter) { final int index = _genericParameters.indexOf(genericParameter); if (index == -1) { throw Error.typeParameterNotDefined(genericParameter); } return getBoundType(index); }
public Type getBoundType(final Type genericParameter) { final int index = _genericParameters.indexOf(genericParameter); if (index == -1) { throw Error.typeParameterNotDefined(genericParameter); } return getBoundType(index); }
public boolean hasBoundParameters() { for (int i = 0, n = size(); i < n; i++) { final Type genericParameter = getGenericParameter(i); final Type parameter = getBoundType(i); if (parameter != genericParameter) { return true; } } return false; }
public boolean hasUnboundParameters() { for (int i = 0, n = size(); i < n; i++) { final Type parameter = getBoundType(i); if (parameter.isGenericParameter()) { return true; } } return false; }
public Type getBoundType(final Type genericParameter) { final int index = _genericParameters.indexOf(genericParameter); if (index == -1) { throw Error.typeParameterNotDefined(genericParameter); } return getBoundType(index); }
public Type findBoundType(final String genericParameterName) { for (int i = 0, n = _genericParameters.size(); i < n; i++) { final Type parameter = _genericParameters.get(i); if (parameter.getFullName().equals(genericParameterName)) { return getBoundType(i); } } return null; }
public Type findBoundType(final String genericParameterName) { for (int i = 0, n = _genericParameters.size(); i < n; i++) { final Type parameter = _genericParameters.get(i); if (parameter.getFullName().equals(genericParameterName)) { return getBoundType(i); } } return null; }
public Type findBoundType(final String genericParameterName) { for (int i = 0, n = _genericParameters.size(); i < n; i++) { final Type parameter = _genericParameters.get(i); if (parameter.getFullName().equals(genericParameterName)) { return getBoundType(i); } } return null; }
public TypeBindings visitTypeBindings(final TypeBindings typeBindings, final TypeBindings bindings) { TypeBindings newTypeBindings = typeBindings; for (final Type<?> genericParameter : typeBindings.getGenericParameters()) { final Type<?> oldBoundType = typeBindings.getBoundType(genericParameter); final Type<?> newBoundType = visit(oldBoundType, bindings); if (oldBoundType != newBoundType) { newTypeBindings = newTypeBindings.withAdditionalBinding( genericParameter, newBoundType ); } } return newTypeBindings; }