Package com.github.javaparser.ast.expr
Class PatternExpr
- java.lang.Object
-
- com.github.javaparser.ast.Node
-
- com.github.javaparser.ast.expr.Expression
-
- com.github.javaparser.ast.expr.PatternExpr
-
- All Implemented Interfaces:
NodeWithRange<Node>,NodeWithTokenRange<Node>,NodeWithType<PatternExpr,Type>,Observable,Visitable,HasParentNode<Node>,Cloneable
- Direct Known Subclasses:
RecordPatternExpr,TypePatternExpr
public abstract class PatternExpr extends Expression implements NodeWithType<PatternExpr,Type>
Pattern Matching in Java
Java 1.0 to 13
Not available.
Java 14
Java 14 introduced TypePatterns with simple pattern matching ininstanceofexpressions.- Author:
- Johannes Coetzee
- See Also:
Java 21 In Java 21, support for pattern matching was extended to switch expressions and were introduced. Since and can be used interchangeably, the class is used as a common parent for both in the JavaParser AST. JDK21 Grammar Pattern: TypePattern RecordPattern TypePattern: LocalVariableDeclaration RecordPattern: ReferenceType ( [PatternList] ) PatternList: Pattern {, Pattern }, JEP305: https://bugs.openjdk.java.net/browse/JDK-8181287, https://docs.oracle.com/javase/specs/jls/se11/html/jls-15.html#jls-15.20
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.github.javaparser.ast.Node
Node.BreadthFirstIterator, Node.DirectChildrenIterator, Node.ObserverRegistrationMode, Node.ParentsVisitor, Node.Parsedness, Node.PostOrderIterator, Node.PreOrderIterator, Node.TreeTraversal
-
-
Field Summary
-
Fields inherited from class com.github.javaparser.ast.expr.Expression
EXCLUDE_ENCLOSED_EXPR, IS_NOT_ENCLOSED_EXPR
-
Fields inherited from class com.github.javaparser.ast.Node
ABSOLUTE_BEGIN_LINE, ABSOLUTE_END_LINE, LINE_SEPARATOR_KEY, NODE_BY_BEGIN_POSITION, PHANTOM_KEY, prettyPrinterNoCommentsConfiguration, PRINTER_KEY, SYMBOL_RESOLVER_KEY
-
-
Constructor Summary
Constructors Constructor Description PatternExpr(Type type)PatternExpr(TokenRange tokenRange)This constructor is used by the parser and is considered private.PatternExpr(TokenRange tokenRange, Type type)This constructor is used by the parser and is considered private.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description PatternExprasPatternExpr()PatternExprclone()PatternExprMetaModelgetMetaModel()TypegetType()The types of record patters and top-level type patterns must be reference types, but nested type patterns can also have primitive types.voidifPatternExpr(Consumer<PatternExpr> action)booleanisPatternExpr()booleanreplace(Node node, Node replacementNode)PatternExprsetType(Type type)Sets the typeOptional<PatternExpr>toPatternExpr()-
Methods inherited from class com.github.javaparser.ast.expr.Expression
appearsInAssignmentContext, appearsInInvocationContext, asAnnotationExpr, asArrayAccessExpr, asArrayCreationExpr, asArrayInitializerExpr, asAssignExpr, asBinaryExpr, asBooleanLiteralExpr, asCastExpr, asCharLiteralExpr, asClassExpr, asConditionalExpr, asDoubleLiteralExpr, asEnclosedExpr, asFieldAccessExpr, asInstanceOfExpr, asIntegerLiteralExpr, asLambdaExpr, asLiteralExpr, asLiteralStringValueExpr, asLongLiteralExpr, asMarkerAnnotationExpr, asMethodCallExpr, asMethodReferenceExpr, asNameExpr, asNormalAnnotationExpr, asNullLiteralExpr, asObjectCreationExpr, asRecordPatternExpr, asSingleMemberAnnotationExpr, asStringLiteralExpr, asSuperExpr, asSwitchExpr, asTextBlockLiteralExpr, asThisExpr, asTypeExpr, asTypePatternExpr, asUnaryExpr, asVariableDeclarationExpr, calculateResolvedType, elidesTypeArguments, ifAnnotationExpr, ifArrayAccessExpr, ifArrayCreationExpr, ifArrayInitializerExpr, ifAssignExpr, ifBinaryExpr, ifBooleanLiteralExpr, ifCastExpr, ifCharLiteralExpr, ifClassExpr, ifConditionalExpr, ifDoubleLiteralExpr, ifEnclosedExpr, ifFieldAccessExpr, ifInstanceOfExpr, ifIntegerLiteralExpr, ifLambdaExpr, ifLiteralExpr, ifLiteralStringValueExpr, ifLongLiteralExpr, ifMarkerAnnotationExpr, ifMethodCallExpr, ifMethodReferenceExpr, ifNameExpr, ifNormalAnnotationExpr, ifNullLiteralExpr, ifObjectCreationExpr, ifRecordPatternExpr, ifSingleMemberAnnotationExpr, ifStringLiteralExpr, ifSuperExpr, ifSwitchExpr, ifTextBlockLiteralExpr, ifThisExpr, ifTypeExpr, ifTypePatternExpr, ifUnaryExpr, ifVariableDeclarationExpr, isAnnotationExpr, isArrayAccessExpr, isArrayCreationExpr, isArrayInitializerExpr, isAssignExpr, isAssignmentContext, isBinaryExpr, isBooleanLiteralExpr, isCastExpr, isCharLiteralExpr, isClassExpr, isConditionalExpr, isDoubleLiteralExpr, isEnclosedExpr, isFieldAccessExpr, isInstanceOfExpr, isIntegerLiteralExpr, isInvocationContext, isLambdaExpr, isLiteralExpr, isLiteralStringValueExpr, isLongLiteralExpr, isMarkerAnnotationExpr, isMethodCallExpr, isMethodReferenceExpr, isNameExpr, isNormalAnnotationExpr, isNullLiteralExpr, isObjectCreationExpr, isPolyExpression, isQualified, isRecordPatternExpr, isSingleMemberAnnotationExpr, isStandaloneExpression, isStringLiteralExpr, isSuperExpr, isSwitchExpr, isTextBlockLiteralExpr, isThisExpr, isTypeExpr, isTypePatternExpr, isUnaryExpr, isVariableDeclarationExpr, toAnnotationExpr, toArrayAccessExpr, toArrayCreationExpr, toArrayInitializerExpr, toAssignExpr, toBinaryExpr, toBooleanLiteralExpr, toCastExpr, toCharLiteralExpr, toClassExpr, toConditionalExpr, toDoubleLiteralExpr, toEnclosedExpr, toFieldAccessExpr, toInstanceOfExpr, toIntegerLiteralExpr, toLambdaExpr, toLiteralExpr, toLiteralStringValueExpr, toLongLiteralExpr, toMarkerAnnotationExpr, toMethodCallExpr, toMethodReferenceExpr, toNameExpr, toNormalAnnotationExpr, toNullLiteralExpr, toObjectCreationExpr, toRecordPatternExpr, toSingleMemberAnnotationExpr, toStringLiteralExpr, toSuperExpr, toSwitchExpr, toTextBlockLiteralExpr, toThisExpr, toTypeExpr, toTypePatternExpr, toUnaryExpr, toVariableDeclarationExpr
-
Methods inherited from class com.github.javaparser.ast.Node
addOrphanComment, containsData, createDefaultPrinter, createDefaultPrinter, customInitialization, equals, findAll, findAll, findAll, findByRange, findCompilationUnit, findData, findFirst, findFirst, findFirst, findRootNode, getAllContainedComments, getChildNodes, getChildNodesByType, getComment, getData, getDataKeys, getDefaultPrinterConfiguration, getLineEndingStyle, getLineEndingStyleOrDefault, getNodesByType, getOrphanComments, getParentNode, getParentNodeForChildren, getParsed, getPrinter, getPrinter, getRange, getSymbolResolver, getTokenRange, hashCode, hasScope, isAncestorOf, isPhantom, isRegistered, notifyPropertyChange, register, register, registerForSubtree, remove, remove, removeComment, removeData, removeForced, removeOrphanComment, replace, setAsParentNodeOf, setAsParentNodeOf, setBlockComment, setComment, setData, setLineComment, setParentNode, setParsed, setRange, setTokenRange, stream, stream, toString, toString, tryAddImportToParentCompilationUnit, unregister, walk, walk, walk
-
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface com.github.javaparser.HasParentNode
findAncestor, findAncestor, findAncestor, hasParentNode, isDescendantOf
-
Methods inherited from interface com.github.javaparser.ast.nodeTypes.NodeWithRange
containsWithin, containsWithinRange, getBegin, getEnd, hasRange
-
Methods inherited from interface com.github.javaparser.ast.nodeTypes.NodeWithType
getTypeAsString, setType, setType, tryAddImportToParentCompilationUnit
-
-
-
-
Constructor Detail
-
PatternExpr
public PatternExpr(Type type)
-
PatternExpr
public PatternExpr(TokenRange tokenRange)
This constructor is used by the parser and is considered private.
-
PatternExpr
public PatternExpr(TokenRange tokenRange, Type type)
This constructor is used by the parser and is considered private.
-
-
Method Detail
-
isPatternExpr
public boolean isPatternExpr()
- Overrides:
isPatternExprin classExpression
-
asPatternExpr
public PatternExpr asPatternExpr()
- Overrides:
asPatternExprin classExpression
-
toPatternExpr
public Optional<PatternExpr> toPatternExpr()
- Overrides:
toPatternExprin classExpression
-
ifPatternExpr
public void ifPatternExpr(Consumer<PatternExpr> action)
- Overrides:
ifPatternExprin classExpression
-
clone
public PatternExpr clone()
- Overrides:
clonein classExpression
-
getMetaModel
public PatternExprMetaModel getMetaModel()
- Overrides:
getMetaModelin classExpression- Returns:
- get JavaParser specific node introspection information.
-
setType
public PatternExpr setType(Type type)
Description copied from interface:NodeWithTypeSets the type- Specified by:
setTypein interfaceNodeWithType<PatternExpr,Type>- Parameters:
type- the type- Returns:
- this
-
getType
public Type getType()
The types of record patters and top-level type patterns must be reference types, but nested type patterns can also have primitive types.- Specified by:
getTypein interfaceNodeWithType<PatternExpr,Type>- Returns:
- the type
-
-