Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/src/java.compiler/share/classes/javax/lang/model/element/ElementKind.java
41161 views
1
/*
2
* Copyright (c) 2005, 2020, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation. Oracle designates this
8
* particular file as subject to the "Classpath" exception as provided
9
* by Oracle in the LICENSE file that accompanied this code.
10
*
11
* This code is distributed in the hope that it will be useful, but WITHOUT
12
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14
* version 2 for more details (a copy is included in the LICENSE file that
15
* accompanied this code).
16
*
17
* You should have received a copy of the GNU General Public License version
18
* 2 along with this work; if not, write to the Free Software Foundation,
19
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20
*
21
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22
* or visit www.oracle.com if you need additional information or have any
23
* questions.
24
*/
25
26
package javax.lang.model.element;
27
28
/**
29
* The {@code kind} of an element.
30
*
31
* <p>Note that it is possible additional element kinds will be added
32
* to accommodate new, currently unknown, language structures added to
33
* future versions of the Java programming language.
34
*
35
* @author Joseph D. Darcy
36
* @author Scott Seligman
37
* @author Peter von der Ah&eacute;
38
* @see Element
39
* @since 1.6
40
*/
41
public enum ElementKind {
42
43
/** A package. */
44
PACKAGE,
45
46
// Declared types
47
/** An enum class. */
48
ENUM,
49
/**
50
* A class not described by a more specific kind (like {@code
51
* ENUM} or {@code RECORD}).
52
*/
53
CLASS,
54
55
/** An annotation interface. (Formerly known as an annotation type.) */
56
ANNOTATION_TYPE,
57
/**
58
* An interface not described by a more specific kind (like
59
* {@code ANNOTATION_TYPE}).
60
*/
61
INTERFACE,
62
63
// Variables
64
/** An enum constant. */
65
ENUM_CONSTANT,
66
/**
67
* A field not described by a more specific kind (like
68
* {@code ENUM_CONSTANT}).
69
*/
70
FIELD,
71
/** A parameter of a method or constructor. */
72
PARAMETER,
73
/** A local variable. */
74
LOCAL_VARIABLE,
75
/** A parameter of an exception handler. */
76
EXCEPTION_PARAMETER,
77
78
// Executables
79
/** A method. */
80
METHOD,
81
/** A constructor. */
82
CONSTRUCTOR,
83
/** A static initializer. */
84
STATIC_INIT,
85
/** An instance initializer. */
86
INSTANCE_INIT,
87
88
/** A type parameter. */
89
TYPE_PARAMETER,
90
91
/**
92
* An implementation-reserved element. This is not the element
93
* you are looking for.
94
*/
95
OTHER,
96
97
// Constants added since initial release
98
99
/**
100
* A resource variable.
101
* @since 1.7
102
*/
103
RESOURCE_VARIABLE,
104
105
/**
106
* A module.
107
* @since 9
108
*/
109
MODULE,
110
111
/**
112
* A record class.
113
* @since 16
114
*/
115
RECORD,
116
117
/**
118
* A record component of a {@code record}.
119
* @since 16
120
*/
121
RECORD_COMPONENT,
122
123
/**
124
* A binding variable in a pattern.
125
* @since 16
126
*/
127
BINDING_VARIABLE;
128
129
/**
130
* Returns {@code true} if this is a kind of class:
131
* either {@code CLASS} or {@code ENUM} or {@code RECORD}.
132
*
133
* @return {@code true} if this is a kind of class
134
*/
135
@SuppressWarnings("preview")
136
public boolean isClass() {
137
return this == CLASS || this == ENUM || this == RECORD;
138
}
139
140
/**
141
* Returns {@code true} if this is a kind of interface:
142
* either {@code INTERFACE} or {@code ANNOTATION_TYPE}.
143
*
144
* @return {@code true} if this is a kind of interface
145
*/
146
public boolean isInterface() {
147
return this == INTERFACE || this == ANNOTATION_TYPE;
148
}
149
150
/**
151
* Returns {@code true} if this is a kind of field:
152
* either {@code FIELD} or {@code ENUM_CONSTANT}.
153
*
154
* @return {@code true} if this is a kind of field
155
*/
156
public boolean isField() {
157
return this == FIELD || this == ENUM_CONSTANT;
158
}
159
}
160
161