JavaParser Source Viewer

Home|JavaParser/com/github/javaparser/ast/expr/VariableDeclarationExpr.java
1/*
2 * Copyright (C) 2007-2010 JĂșlio Vilmar Gesser.
3 * Copyright (C) 2011, 2013-2020 The JavaParser Team.
4 *
5 * This file is part of JavaParser.
6 *
7 * JavaParser can be used either under the terms of
8 * a) the GNU Lesser General Public License as published by
9 *     the Free Software Foundation, either version 3 of the License, or
10 *     (at your option) any later version.
11 * b) the terms of the Apache License
12 *
13 * You should have received a copy of both licenses in LICENCE.LGPL and
14 * LICENCE.APACHE. Please refer to those files for details.
15 *
16 * JavaParser is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 * GNU Lesser General Public License for more details.
20 */
21package com.github.javaparser.ast.expr;
22
23import com.github.javaparser.ast.AllFieldsConstructor;
24import com.github.javaparser.ast.Modifier;
25import com.github.javaparser.ast.Node;
26import com.github.javaparser.ast.NodeList;
27import com.github.javaparser.ast.body.VariableDeclarator;
28import com.github.javaparser.ast.nodeTypes.NodeWithAnnotations;
29import com.github.javaparser.ast.nodeTypes.NodeWithVariables;
30import com.github.javaparser.ast.nodeTypes.modifiers.NodeWithFinalModifier;
31import com.github.javaparser.ast.observer.ObservableProperty;
32import com.github.javaparser.ast.type.Type;
33import com.github.javaparser.ast.visitor.CloneVisitor;
34import com.github.javaparser.ast.visitor.GenericVisitor;
35import com.github.javaparser.ast.visitor.VoidVisitor;
36import com.github.javaparser.metamodel.JavaParserMetaModel;
37import com.github.javaparser.metamodel.NonEmptyProperty;
38import com.github.javaparser.metamodel.VariableDeclarationExprMetaModel;
39import java.util.Arrays;
40import java.util.stream.Collectors;
41import static com.github.javaparser.ast.NodeList.nodeList;
42import static com.github.javaparser.utils.Utils.assertNotNull;
43import com.github.javaparser.TokenRange;
44import java.util.function.Consumer;
45import java.util.Optional;
46import com.github.javaparser.ast.Generated;
47
48/**
49 * A declaration of variables.
50 * It is an expression, so it can be put in places like the initializer of a for loop,
51 * or the resources part of the try statement.
52 * <br>{@code final int x=3, y=55}
53 *
54 * <br>All annotations preceding the type will be set on this object, not on the type.
55 * JavaParser doesn't know if it they are applicable to the method or the type.
56 *
57 * @author Julio Vilmar Gesser
58 */
59public class VariableDeclarationExpr extends Expression implements NodeWithFinalModifier<VariableDeclarationExpr>, NodeWithAnnotations<VariableDeclarationExpr>, NodeWithVariables<VariableDeclarationExpr> {
60
61    private NodeList<Modifiermodifiers;
62
63    private NodeList<AnnotationExprannotations;
64
65    @NonEmptyProperty
66    private NodeList<VariableDeclaratorvariables;
67
68    public VariableDeclarationExpr() {
69        this(null, new NodeList<>(), new NodeList<>(), new NodeList<>());
70    }
71
72    public VariableDeclarationExpr(final Type typeString variableName) {
73        this(null, new NodeList<>(), new NodeList<>(), nodeList(new VariableDeclarator(typevariableName)));
74    }
75
76    public VariableDeclarationExpr(VariableDeclarator var) {
77        this(null, new NodeList<>(), new NodeList<>(), nodeList(var));
78    }
79
80    public VariableDeclarationExpr(final Type typeString variableNameModifier... modifiers) {
81        this(nullArrays.stream(modifiers).collect(Collectors.toCollection(() -> new NodeList<>())), new NodeList<>(), nodeList(new VariableDeclarator(typevariableName)));
82    }
83
84    public VariableDeclarationExpr(VariableDeclarator varModifier... modifiers) {
85        this(nullArrays.stream(modifiers).collect(Collectors.toCollection(() -> new NodeList<>())), new NodeList<>(), nodeList(var));
86    }
87
88    public VariableDeclarationExpr(final NodeList<VariableDeclaratorvariables) {
89        this(null, new NodeList<>(), new NodeList<>(), variables);
90    }
91
92    public VariableDeclarationExpr(final NodeList<Modifiermodifiersfinal NodeList<VariableDeclaratorvariables) {
93        this(nullmodifiers, new NodeList<>(), variables);
94    }
95
96    @AllFieldsConstructor
97    public VariableDeclarationExpr(final NodeList<Modifiermodifiersfinal NodeList<AnnotationExprannotationsfinal NodeList<VariableDeclaratorvariables) {
98        this(nullmodifiersannotationsvariables);
99    }
100
101    /**
102     * This constructor is used by the parser and is considered private.
103     */
104    @Generated("com.github.javaparser.generator.core.node.MainConstructorGenerator")
105    public VariableDeclarationExpr(TokenRange tokenRangeNodeList<ModifiermodifiersNodeList<AnnotationExprannotationsNodeList<VariableDeclaratorvariables) {
106        super(tokenRange);
107        setModifiers(modifiers);
108        setAnnotations(annotations);
109        setVariables(variables);
110        customInitialization();
111    }
112
113    @Override
114    @Generated("com.github.javaparser.generator.core.node.AcceptGenerator")
115    public <RAR accept(final GenericVisitor<RAvfinal A arg) {
116        return v.visit(this, arg);
117    }
118
119    @Override
120    @Generated("com.github.javaparser.generator.core.node.AcceptGenerator")
121    public <Avoid accept(final VoidVisitor<Avfinal A arg) {
122        v.visit(this, arg);
123    }
124
125    @Generated("com.github.javaparser.generator.core.node.PropertyGenerator")
126    public NodeList<AnnotationExprgetAnnotations() {
127        return annotations;
128    }
129
130    /**
131     * Return the modifiers of this variable declaration.
132     *
133     * @return modifiers
134     * @see Modifier
135     */
136    @Generated("com.github.javaparser.generator.core.node.PropertyGenerator")
137    public NodeList<ModifiergetModifiers() {
138        return modifiers;
139    }
140
141    @Generated("com.github.javaparser.generator.core.node.PropertyGenerator")
142    public NodeList<VariableDeclaratorgetVariables() {
143        return variables;
144    }
145
146    @Generated("com.github.javaparser.generator.core.node.PropertyGenerator")
147    public VariableDeclarationExpr setAnnotations(final NodeList<AnnotationExprannotations) {
148        assertNotNull(annotations);
149        if (annotations == this.annotations) {
150            return (VariableDeclarationExpr) this;
151        }
152        notifyPropertyChange(ObservableProperty.ANNOTATIONS, this.annotationsannotations);
153        if (this.annotations != null)
154            this.annotations.setParentNode(null);
155        this.annotations = annotations;
156        setAsParentNodeOf(annotations);
157        return this;
158    }
159
160    @Generated("com.github.javaparser.generator.core.node.PropertyGenerator")
161    public VariableDeclarationExpr setModifiers(final NodeList<Modifiermodifiers) {
162        assertNotNull(modifiers);
163        if (modifiers == this.modifiers) {
164            return (VariableDeclarationExpr) this;
165        }
166        notifyPropertyChange(ObservableProperty.MODIFIERS, this.modifiersmodifiers);
167        if (this.modifiers != null)
168            this.modifiers.setParentNode(null);
169        this.modifiers = modifiers;
170        setAsParentNodeOf(modifiers);
171        return this;
172    }
173
174    @Generated("com.github.javaparser.generator.core.node.PropertyGenerator")
175    public VariableDeclarationExpr setVariables(final NodeList<VariableDeclaratorvariables) {
176        assertNotNull(variables);
177        if (variables == this.variables) {
178            return (VariableDeclarationExpr) this;
179        }
180        notifyPropertyChange(ObservableProperty.VARIABLES, this.variablesvariables);
181        if (this.variables != null)
182            this.variables.setParentNode(null);
183        this.variables = variables;
184        setAsParentNodeOf(variables);
185        return this;
186    }
187
188    @Override
189    @Generated("com.github.javaparser.generator.core.node.RemoveMethodGenerator")
190    public boolean remove(Node node) {
191        if (node == null)
192            return false;
193        for (int i = 0i < annotations.size(); i++) {
194            if (annotations.get(i) == node) {
195                annotations.remove(i);
196                return true;
197            }
198        }
199        for (int i = 0i < modifiers.size(); i++) {
200            if (modifiers.get(i) == node) {
201                modifiers.remove(i);
202                return true;
203            }
204        }
205        for (int i = 0i < variables.size(); i++) {
206            if (variables.get(i) == node) {
207                variables.remove(i);
208                return true;
209            }
210        }
211        return super.remove(node);
212    }
213
214    @Override
215    @Generated("com.github.javaparser.generator.core.node.CloneGenerator")
216    public VariableDeclarationExpr clone() {
217        return (VariableDeclarationExpraccept(new CloneVisitor(), null);
218    }
219
220    @Override
221    @Generated("com.github.javaparser.generator.core.node.GetMetaModelGenerator")
222    public VariableDeclarationExprMetaModel getMetaModel() {
223        return JavaParserMetaModel.variableDeclarationExprMetaModel;
224    }
225
226    @Override
227    @Generated("com.github.javaparser.generator.core.node.ReplaceMethodGenerator")
228    public boolean replace(Node nodeNode replacementNode) {
229        if (node == null)
230            return false;
231        for (int i = 0i < annotations.size(); i++) {
232            if (annotations.get(i) == node) {
233                annotations.set(i, (AnnotationExprreplacementNode);
234                return true;
235            }
236        }
237        for (int i = 0i < modifiers.size(); i++) {
238            if (modifiers.get(i) == node) {
239                modifiers.set(i, (ModifierreplacementNode);
240                return true;
241            }
242        }
243        for (int i = 0i < variables.size(); i++) {
244            if (variables.get(i) == node) {
245                variables.set(i, (VariableDeclaratorreplacementNode);
246                return true;
247            }
248        }
249        return super.replace(nodereplacementNode);
250    }
251
252    @Override
253    @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator")
254    public boolean isVariableDeclarationExpr() {
255        return true;
256    }
257
258    @Override
259    @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator")
260    public VariableDeclarationExpr asVariableDeclarationExpr() {
261        return this;
262    }
263
264    @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator")
265    public void ifVariableDeclarationExpr(Consumer<VariableDeclarationExpraction) {
266        action.accept(this);
267    }
268
269    @Override
270    @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator")
271    public Optional<VariableDeclarationExprtoVariableDeclarationExpr() {
272        return Optional.of(this);
273    }
274}
275
MembersX
VariableDeclarationExpr:VariableDeclarationExpr
VariableDeclarationExpr:remove
VariableDeclarationExpr:asVariableDeclarationExpr
VariableDeclarationExpr:setAnnotations
VariableDeclarationExpr:isVariableDeclarationExpr
VariableDeclarationExpr:toVariableDeclarationExpr
VariableDeclarationExpr:getModifiers
VariableDeclarationExpr:getAnnotations
VariableDeclarationExpr:clone
VariableDeclarationExpr:getMetaModel
VariableDeclarationExpr:variables
VariableDeclarationExpr:setVariables
VariableDeclarationExpr:getVariables
VariableDeclarationExpr:ifVariableDeclarationExpr
VariableDeclarationExpr:modifiers
VariableDeclarationExpr:accept
VariableDeclarationExpr:replace
VariableDeclarationExpr:setModifiers
VariableDeclarationExpr:annotations
Members
X