001: /*
002: * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
003: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004: *
005: * This code is free software; you can redistribute it and/or modify it
006: * under the terms of the GNU General Public License version 2 only, as
007: * published by the Free Software Foundation. Sun designates this
008: * particular file as subject to the "Classpath" exception as provided
009: * by Sun in the LICENSE file that accompanied this code.
010: *
011: * This code is distributed in the hope that it will be useful, but WITHOUT
012: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014: * version 2 for more details (a copy is included in the LICENSE file that
015: * accompanied this code).
016: *
017: * You should have received a copy of the GNU General Public License version
018: * 2 along with this work; if not, write to the Free Software Foundation,
019: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020: *
021: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022: * CA 95054 USA or visit www.sun.com if you need additional information or
023: * have any questions.
024: */
025:
026: package javax.lang.model.type;
027:
028: /**
029: * The kind of a type mirror.
030: *
031: * <p>Note that it is possible additional type kinds will be added to
032: * accommodate new, currently unknown, language structures added to
033: * future versions of the Java™ programming language.
034: *
035: * @author Joseph D. Darcy
036: * @author Scott Seligman
037: * @author Peter von der Ahé
038: * @version 1.11 07/05/05
039: * @see TypeMirror
040: * @since 1.6
041: */
042: public enum TypeKind {
043: /**
044: * The primitive type {@code boolean}.
045: */
046: BOOLEAN,
047:
048: /**
049: * The primitive type {@code byte}.
050: */
051: BYTE,
052:
053: /**
054: * The primitive type {@code short}.
055: */
056: SHORT,
057:
058: /**
059: * The primitive type {@code int}.
060: */
061: INT,
062:
063: /**
064: * The primitive type {@code long}.
065: */
066: LONG,
067:
068: /**
069: * The primitive type {@code char}.
070: */
071: CHAR,
072:
073: /**
074: * The primitive type {@code float}.
075: */
076: FLOAT,
077:
078: /**
079: * The primitive type {@code double}.
080: */
081: DOUBLE,
082:
083: /**
084: * The pseudo-type corresponding to the keyword {@code void}.
085: * @see NoType
086: */
087: VOID,
088:
089: /**
090: * A pseudo-type used where no actual type is appropriate.
091: * @see NoType
092: */
093: NONE,
094:
095: /**
096: * The null type.
097: */
098: NULL,
099:
100: /**
101: * An array type.
102: */
103: ARRAY,
104:
105: /**
106: * A class or interface type.
107: */
108: DECLARED,
109:
110: /**
111: * A class or interface type that could not be resolved.
112: */
113: ERROR,
114:
115: /**
116: * A type variable.
117: */
118: TYPEVAR,
119:
120: /**
121: * A wildcard type argument.
122: */
123: WILDCARD,
124:
125: /**
126: * A pseudo-type corresponding to a package element.
127: * @see NoType
128: */
129: PACKAGE,
130:
131: /**
132: * A method, constructor, or initializer.
133: */
134: EXECUTABLE,
135:
136: /**
137: * An implementation-reserved type.
138: * This is not the type you are looking for.
139: */
140: OTHER;
141:
142: /**
143: * Returns {@code true} if this kind corresponds to a primitive
144: * type and {@code false} otherwise.
145: * @return {@code true} if this kind corresponds to a primitive type
146: */
147: public boolean isPrimitive() {
148: switch (this ) {
149: case BOOLEAN:
150: case BYTE:
151: case SHORT:
152: case INT:
153: case LONG:
154: case CHAR:
155: case FLOAT:
156: case DOUBLE:
157: return true;
158:
159: default:
160: return false;
161: }
162: }
163: }
|