Class TypeExtractor

java.lang.Object
com.github.javaparser.symbolsolver.javaparsermodel.DefaultVisitorAdapter
com.github.javaparser.symbolsolver.javaparsermodel.TypeExtractor
All Implemented Interfaces:
com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>

public class TypeExtractor extends DefaultVisitorAdapter
  • Constructor Summary

    Constructors
    Constructor
    Description
    TypeExtractor(com.github.javaparser.resolution.TypeSolver typeSolver, JavaParserFacade facade)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected com.github.javaparser.resolution.Solver
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.body.FieldDeclaration node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.body.Parameter node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.body.VariableDeclarator node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.ArrayAccessExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.ArrayCreationExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.ArrayInitializerExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.AssignExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.BinaryExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.BooleanLiteralExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.CastExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.CharLiteralExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.ClassExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.ConditionalExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.DoubleLiteralExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.EnclosedExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.FieldAccessExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.InstanceOfExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.IntegerLiteralExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.LambdaExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.LongLiteralExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.MethodCallExpr node, Boolean solveLambdas)
     
    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.
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.NameExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.NullLiteralExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.ObjectCreationExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.StringLiteralExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.SuperExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.SwitchExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.TextBlockLiteralExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.ThisExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.TypeExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.UnaryExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.expr.VariableDeclarationExpr node, Boolean solveLambdas)
     
    com.github.javaparser.resolution.types.ResolvedType
    visit(com.github.javaparser.ast.stmt.ExpressionStmt node, Boolean solveLambdas)
     

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 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:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.body.Parameter node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.ArrayAccessExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.ArrayCreationExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.ArrayInitializerExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.AssignExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.BinaryExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.CastExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.ClassExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.ConditionalExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.EnclosedExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.FieldAccessExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.InstanceOfExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.StringLiteralExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.TextBlockLiteralExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.IntegerLiteralExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.LongLiteralExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.CharLiteralExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.DoubleLiteralExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.BooleanLiteralExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.NullLiteralExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.MethodCallExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.NameExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.TypeExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.SwitchExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.stmt.ExpressionStmt node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.ObjectCreationExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.ThisExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.SuperExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.UnaryExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.VariableDeclarationExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.expr.LambdaExpr node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • 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> for String::new passed where a Function is expected). When solveLambdas=true, the type is further refined via InferenceContext using 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. String for String::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 calls JavaParserFacade.toMethodUsage(MethodReferenceExpr, List) to obtain the actual return type of the referenced callable is skipped for ::new. toMethodUsage looks up methods by name via getAllMethods(), 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:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
      Parameters:
      node - the method/constructor reference expression to type-check
      solveLambdas - when true, perform full inference; when false, 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 resolved
      UnsupportedOperationException - if the reference appears in an unsupported context
    • visit

      public com.github.javaparser.resolution.types.ResolvedType visit(com.github.javaparser.ast.body.FieldDeclaration node, Boolean solveLambdas)
      Specified by:
      visit in interface com.github.javaparser.ast.visitor.GenericVisitor<com.github.javaparser.resolution.types.ResolvedType, Boolean>
      Overrides:
      visit in class DefaultVisitorAdapter
    • createSolver

      protected com.github.javaparser.resolution.Solver createSolver()