blob: 44dbdec1ca104b04b8e7edb0fb695c1a76ff8fe2 [file] [log] [blame]
package com.github.javaparser.symbolsolver.model.typesystem;
import com.github.javaparser.resolution.declarations.*;
import com.github.javaparser.resolution.types.*;
import com.github.javaparser.resolution.types.ResolvedType;
import java.util.Map;
import java.util.function.Function;
public class LazyType implements ResolvedType {
private ResolvedType concrete;
private Function<Void, ResolvedType> provider;
public LazyType(Function<Void, ResolvedType> provider) {
this.provider = provider;
}
private ResolvedType 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().isWildcard();
}
@Override
public ResolvedArrayType asArrayType() {
return getType().asArrayType();
}
@Override
public ResolvedReferenceType asReferenceType() {
return getType().asReferenceType();
}
@Override
public ResolvedTypeParameterDeclaration asTypeParameter() {
return getType().asTypeParameter();
}
@Override
public ResolvedTypeVariable asTypeVariable() {
return getType().asTypeVariable();
}
@Override
public ResolvedPrimitiveType asPrimitive() {
return getType().asPrimitive();
}
@Override
public ResolvedWildcard asWildcard() {
return getType().asWildcard();
}
@Override
public String describe() {
return getType().describe();
}
@Override
public ResolvedType replaceTypeVariables(ResolvedTypeParameterDeclaration tp, ResolvedType replaced,
Map<ResolvedTypeParameterDeclaration, ResolvedType> inferredTypes) {
return getType().replaceTypeVariables(tp, replaced, inferredTypes);
}
@Override
public ResolvedType replaceTypeVariables(ResolvedTypeParameterDeclaration tp, ResolvedType replaced) {
return getType().replaceTypeVariables(tp, replaced);
}
@Override
public boolean isAssignableBy(ResolvedType other) {
return getType().isAssignableBy(other);
}
}