01: /*
02: * Copyright 2006 Google Inc.
03: *
04: * Licensed under the Apache License, Version 2.0 (the "License"); you may not
05: * use this file except in compliance with the License. You may obtain a copy of
06: * the License at
07: *
08: * http://www.apache.org/licenses/LICENSE-2.0
09: *
10: * Unless required by applicable law or agreed to in writing, software
11: * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12: * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13: * License for the specific language governing permissions and limitations under
14: * the License.
15: */
16: package com.google.gwt.core.ext.typeinfo;
17:
18: /**
19: * Abstract superclass for types.
20: */
21: public abstract class JType {
22:
23: public abstract JType getErasedType();
24:
25: public abstract String getJNISignature();
26:
27: public JType getLeafType() {
28: return this ;
29: }
30:
31: public String getParameterizedQualifiedSourceName() {
32: return getQualifiedSourceName();
33: }
34:
35: public abstract String getQualifiedSourceName();
36:
37: public abstract String getSimpleSourceName();
38:
39: /**
40: * Returns this instance if it is a annotation or <code>null</code> if it is
41: * not.
42: *
43: * @return this instance if it is a annotation or <code>null</code> if it is
44: * not
45: */
46: public JAnnotationType isAnnotation() {
47: return null;
48: }
49:
50: public abstract JArrayType isArray();
51:
52: public abstract JClassType isClass();
53:
54: public JClassType isClassOrInterface() {
55: JClassType type = isClass();
56: if (type != null) {
57: return type;
58: }
59: return isInterface();
60: }
61:
62: /**
63: * Returns this instance if it is an enumeration or <code>null</code> if it
64: * is not.
65: *
66: * @return this instance if it is an enumeration or <code>null</code> if it
67: * is not
68: */
69: public abstract JEnumType isEnum();
70:
71: // TODO: Rename this to isGeneric
72: public abstract JGenericType isGenericType();
73:
74: public abstract JClassType isInterface();
75:
76: public abstract JParameterizedType isParameterized();
77:
78: public abstract JPrimitiveType isPrimitive();
79:
80: // TODO: Rename this to isRaw
81: public abstract JRawType isRawType();
82:
83: public JTypeParameter isTypeParameter() {
84: return null;
85: }
86:
87: public abstract JWildcardType isWildcard();
88:
89: /**
90: * Returns either the substitution of this type based on the parameterized
91: * type or this instance.
92: *
93: * @param parameterizedType
94: * @return either the substitution of this type based on the parameterized
95: * type or this instance
96: */
97: abstract JType getSubstitutedType(
98: JParameterizedType parameterizedType);
99: }
|