blob: 179c0fb9ed0ec851f86862b88c3f18c3d3999cb2 [file] [log] [blame]
package com.github.javaparser.symbolsolver.model.typesystem;
import com.github.javaparser.symbolsolver.model.declarations.TypeParameterDeclaration;
import java.util.Map;
import java.util.function.Function;
public class LazyType implements Type {
private Type concrete;
private Function<Void, Type> provider;
public LazyType(Function<Void, Type> provider) {
this.provider = provider;
}
private Type getType() {
if (concrete == null) {
concrete = provider.apply(null);
}
return concrete;
}
@Override
public boolean isArray() {
return getType().isArray();
}
@Override
public int arrayLevel() {
return getType().arrayLevel();
}
@Override
public boolean isPrimitive() {
return getType().isPrimitive();
}
@Override
public boolean isNull() {
return getType().isNull();
}
@Override
public boolean isReference() {
return getType().isReference();
}
@Override
public boolean isReferenceType() {
return getType().isReferenceType();
}
@Override
public boolean isVoid() {
return getType().isVoid();
}
@Override
public boolean isTypeVariable() {
return getType().isTypeVariable();
}
@Override
public boolean isWildcard() {
return getType().isArray();
}
@Override
public ArrayType asArrayType() {
return getType().asArrayType();
}
@Override
public ReferenceType asReferenceType() {
return getType().asReferenceType();
}
@Override
public TypeParameterDeclaration asTypeParameter() {
return getType().asTypeParameter();
}
@Override
public TypeVariable asTypeVariable() {
return getType().asTypeVariable();
}
@Override
public PrimitiveType asPrimitive() {
return getType().asPrimitive();
}
@Override
public Wildcard asWildcard() {
return getType().asWildcard();
}
@Override
public String describe() {
return getType().describe();
}
@Override
public Type replaceTypeVariables(TypeParameterDeclaration tp, Type replaced, Map<TypeParameterDeclaration, Type> inferredTypes) {
return getType().replaceTypeVariables(tp, replaced, inferredTypes);
}
@Override
public Type replaceTypeVariables(TypeParameterDeclaration tp, Type replaced) {
return getType().replaceTypeVariables(tp, replaced);
}
@Override
public boolean isAssignableBy(Type other) {
return getType().isAssignableBy(other);
}
}