JavaParser Source Viewer

Home|JavaParser/com/github/javaparser/ast/nodeTypes/NodeWithTypeParameters.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 */
21
22package com.github.javaparser.ast.nodeTypes;
23
24import com.github.javaparser.ast.Node;
25import com.github.javaparser.ast.NodeList;
26import com.github.javaparser.ast.type.TypeParameter;
27
28import static com.github.javaparser.StaticJavaParser.parseTypeParameter;
29
30/**
31 * A node that can have type parameters.
32 * <pre>
33 *     class X {}        --&gt; typeParameters == []
34 *     class X&lt;&gt; {}      --&gt; does not occur.
35 *     class X&lt;C,D&gt; {}   --&gt; typeParameters = [C,D]
36 * </pre>
37 */
38public interface NodeWithTypeParameters<N extends Node> {
39    NodeList<TypeParametergetTypeParameters();
40
41    default TypeParameter getTypeParameter(int i) {
42        return getTypeParameters().get(i);
43    }
44
45    @SuppressWarnings("unchecked")
46    default N setTypeParameter(int iTypeParameter typeParameter) {
47        getTypeParameters().set(itypeParameter);
48        return (N) this;
49    }
50
51    @SuppressWarnings("unchecked")
52    default N addTypeParameter(TypeParameter typeParameter) {
53        getTypeParameters().add(typeParameter);
54        return (N) this;
55    }
56
57    /**
58     * Adds a type parameter like {@code X extends Serializable}
59     */
60    default N addTypeParameter(String typeParameter) {
61        return addTypeParameter(parseTypeParameter(typeParameter));
62    }
63
64    N setTypeParameters(NodeList<TypeParametertypeParameters);
65
66    default boolean isGeneric() {
67        return getTypeParameters().size() > 0;
68    }
69}
70
MembersX
NodeWithTypeParameters:setTypeParameters
NodeWithTypeParameters:getTypeParameters
NodeWithTypeParameters:setTypeParameter
NodeWithTypeParameters:getTypeParameter
NodeWithTypeParameters:addTypeParameter
NodeWithTypeParameters:isGeneric
Members
X