diff options
Diffstat (limited to 'javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/model/typesystem/LazyType.java')
-rw-r--r-- | javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/model/typesystem/LazyType.java | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/model/typesystem/LazyType.java b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/model/typesystem/LazyType.java new file mode 100644 index 000000000..44dbdec1c --- /dev/null +++ b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/model/typesystem/LazyType.java @@ -0,0 +1,120 @@ +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); + } +} |