Package com.github.javaparser.ast.expr
Class RecordPatternExpr
- java.lang.Object
-
- com.github.javaparser.ast.Node
-
- com.github.javaparser.ast.expr.Expression
-
- com.github.javaparser.ast.expr.PatternExpr
-
- com.github.javaparser.ast.expr.RecordPatternExpr
-
- All Implemented Interfaces:
NodeWithFinalModifier<RecordPatternExpr>
,NodeWithModifiers<RecordPatternExpr>
,NodeWithRange<Node>
,NodeWithTokenRange<Node>
,NodeWithType<PatternExpr,Type>
,Observable
,Visitable
,HasParentNode<Node>
,Cloneable
public class RecordPatternExpr extends PatternExpr implements NodeWithFinalModifier<RecordPatternExpr>
Record Patterns
Record patterns were officially added in Java 21 to allow the deconstruction of record values and provide convenient access to inner fields through pattern matching.
JDK 21 Grammar
Pattern TypePattern RecordPattern RecordPattern: ReferenceType ( [PatternList] ) PatternList Pattern {, Pattern }
Example
Example taken from JEP440: RecordPatternsrecord Pair(Object x, Object y) {} Pair p = new Pair(42, 42); if (p instanceof Pair(String s, String t)) { System.out.println(s + ", " + t); } else { System.out.println("Not a pair of strings"); }
- See Also:
PatternExpr
,TypePatternExpr
, JEP 440: Record Patterns
-
-
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 RecordPatternExpr()
RecordPatternExpr(NodeList<Modifier> modifiers, Type type, NodeList<PatternExpr> patternList)
RecordPatternExpr(TokenRange tokenRange, NodeList<Modifier> modifiers, Type type, NodeList<PatternExpr> patternList)
This constructor is used by the parser and is considered private.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <R,A>
Raccept(GenericVisitor<R,A> v, A arg)
Accept method for visitor support.<A> void
accept(VoidVisitor<A> v, A arg)
Accept method for visitor support.RecordPatternExpr
asRecordPatternExpr()
RecordPatternExpr
clone()
RecordPatternExprMetaModel
getMetaModel()
NodeList<Modifier>
getModifiers()
Return the modifiers of this variable declaration.NodeList<PatternExpr>
getPatternList()
ReferenceType
getType()
The type of RecordPatternExpr must always be a reference type.void
ifRecordPatternExpr(Consumer<RecordPatternExpr> action)
boolean
isRecordPatternExpr()
boolean
remove(Node node)
boolean
replace(Node node, Node replacementNode)
RecordPatternExpr
setModifiers(NodeList<Modifier> modifiers)
RecordPatternExpr
setPatternList(NodeList<PatternExpr> patternList)
Optional<RecordPatternExpr>
toRecordPatternExpr()
-
Methods inherited from class com.github.javaparser.ast.expr.PatternExpr
asPatternExpr, ifPatternExpr, isPatternExpr, setType, 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, 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, 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, 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, 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, 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.modifiers.NodeWithFinalModifier
isFinal, setFinal
-
Methods inherited from interface com.github.javaparser.ast.nodeTypes.NodeWithModifiers
addModifier, getAccessSpecifier, hasModifier, removeModifier, setModifier, setModifiers
-
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
-
RecordPatternExpr
public RecordPatternExpr()
-
RecordPatternExpr
public RecordPatternExpr(NodeList<Modifier> modifiers, Type type, NodeList<PatternExpr> patternList)
-
RecordPatternExpr
public RecordPatternExpr(TokenRange tokenRange, NodeList<Modifier> modifiers, Type type, NodeList<PatternExpr> patternList)
This constructor is used by the parser and is considered private.
-
-
Method Detail
-
getType
public ReferenceType getType()
The type of RecordPatternExpr must always be a reference type. Only nested TypePatternExprs may have primitive types.- Specified by:
getType
in interfaceNodeWithType<PatternExpr,Type>
- Overrides:
getType
in classPatternExpr
- Returns:
- the type
-
accept
public <R,A> R accept(GenericVisitor<R,A> v, A arg)
Description copied from interface:Visitable
Accept method for visitor support.- Specified by:
accept
in interfaceVisitable
- Type Parameters:
R
- the type of the return value of the visitorA
- the type the user argument passed to the visitor- Parameters:
v
- the visitor implementationarg
- the argument passed to the visitor (of type A)- Returns:
- the result of the visit (of type R)
-
accept
public <A> void accept(VoidVisitor<A> v, A arg)
Description copied from interface:Visitable
Accept method for visitor support.
-
getModifiers
public NodeList<Modifier> getModifiers()
Description copied from interface:NodeWithModifiers
Return the modifiers of this variable declaration. Warning: modifying the returned set will not trigger observers, you have to use setModifiers for that.- Specified by:
getModifiers
in interfaceNodeWithModifiers<RecordPatternExpr>
- Returns:
- modifiers
- See Also:
Modifier
-
setModifiers
public RecordPatternExpr setModifiers(NodeList<Modifier> modifiers)
- Specified by:
setModifiers
in interfaceNodeWithModifiers<RecordPatternExpr>
-
isRecordPatternExpr
public boolean isRecordPatternExpr()
- Overrides:
isRecordPatternExpr
in classExpression
-
asRecordPatternExpr
public RecordPatternExpr asRecordPatternExpr()
- Overrides:
asRecordPatternExpr
in classExpression
-
toRecordPatternExpr
public Optional<RecordPatternExpr> toRecordPatternExpr()
- Overrides:
toRecordPatternExpr
in classExpression
-
ifRecordPatternExpr
public void ifRecordPatternExpr(Consumer<RecordPatternExpr> action)
- Overrides:
ifRecordPatternExpr
in classExpression
-
getPatternList
public NodeList<PatternExpr> getPatternList()
-
setPatternList
public RecordPatternExpr setPatternList(NodeList<PatternExpr> patternList)
-
replace
public boolean replace(Node node, Node replacementNode)
- Overrides:
replace
in classPatternExpr
-
clone
public RecordPatternExpr clone()
- Overrides:
clone
in classPatternExpr
-
getMetaModel
public RecordPatternExprMetaModel getMetaModel()
- Overrides:
getMetaModel
in classPatternExpr
- Returns:
- get JavaParser specific node introspection information.
-
-