Class TypeExtractor
- All Implemented Interfaces:
com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
-
Constructor Summary
ConstructorsConstructorDescriptionTypeExtractor(com.github.javaparser.resolution.TypeSolver typeSolver, JavaParserFacade facade) -
Method Summary
Modifier and TypeMethodDescriptionprotected com.github.javaparser.resolution.Solvercom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypeReturns the resolved type of a method or constructor reference expression.com.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypecom.github.javaparser.resolution.types.ResolvedTypeMethods inherited from class DefaultVisitorAdapter
visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit
-
Constructor Details
-
TypeExtractor
public TypeExtractor(com.github.javaparser.resolution.TypeSolver typeSolver, JavaParserFacade facade)
-
-
Method Details
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.body.VariableDeclarator node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.body.Parameter node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.ArrayAccessExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.ArrayCreationExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.ArrayInitializerExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.AssignExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.BinaryExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.CastExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.ClassExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.ConditionalExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.EnclosedExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.FieldAccessExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.InstanceOfExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.StringLiteralExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.TextBlockLiteralExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.IntegerLiteralExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.LongLiteralExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.CharLiteralExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.DoubleLiteralExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.BooleanLiteralExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.NullLiteralExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.MethodCallExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.NameExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.TypeExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.SwitchExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.stmt.ExpressionStmt node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.ObjectCreationExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.ThisExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.SuperExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.UnaryExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.VariableDeclarationExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.LambdaExpr node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.MethodReferenceExpr node, Boolean solveLambdas) Returns the resolved type of a method or constructor reference expression.Per JLS §15.13, a method/constructor reference is a poly expression: its type is the functional interface it satisfies in context, not a standalone type. The result therefore depends on where the reference appears:
- Argument to a method call – the formal parameter type of the enclosing call at
the reference's position (e.g.
Function<String,String>forString::newpassed where aFunctionis expected). WhensolveLambdas=true, the type is further refined viaInferenceContextusing the functional method's return type. - Variable initializer – the declared type of the variable.
- Assignment target – the type of the left-hand side expression.
Constructor references (
::new)Constructor references were previously short-circuited to return the constructed type directly (e.g.
StringforString::new). This was wrong: the constructed type is the return type of the referenced constructor, not the type of the reference expression itself. Constructor references now fall through to the same context-based logic used for ordinary method references.One special case remains: when
solveLambdas=true, the inference step that callsJavaParserFacade.toMethodUsage(MethodReferenceExpr, List)to obtain the actual return type of the referenced callable is skipped for::new.toMethodUsagelooks up methods by name viagetAllMethods(), which never contains constructors. Skipping is safe because a constructor always returns the constructed type, which equals the functional interface's return type — so the inference pair(formal, actual)would carry no new information.- Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter- Parameters:
node- the method/constructor reference expression to type-checksolveLambdas- whentrue, perform full inference; whenfalse, return the raw formal parameter type from the enclosing declaration- Returns:
- the resolved type of the reference expression in its context
- Throws:
com.github.javaparser.resolution.UnsolvedSymbolException- if the enclosing method call cannot be resolvedUnsupportedOperationException- if the reference appears in an unsupported context
- Argument to a method call – the formal parameter type of the enclosing call at
the reference's position (e.g.
-
visit
public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.body.FieldDeclaration node, Boolean solveLambdas) - Specified by:
visitin interfacecom.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>- Overrides:
visitin classDefaultVisitorAdapter
-
createSolver
protected com.github.javaparser.resolution.Solver createSolver()
-