The array of actual type arguments this type or member is bound to. Zero-length if this type is not generic or is not bound or is a type with implied type arguments, such as from the diamond syntax for new class expressions. Returns a Collection of JavaType's.

getBaseComponentType

The base component type of this array, that is, the type we get when all array dimensions have been removed. For example, if this type is "int[][]", this will return the type for "int". If this is not an array type, this returns null (to match the behavior of java/lang/Class).

getQualifiedName

Gets the fully qualified name of this type in source format. Here, "source format" means the format of a type reference in a source compilation unit. A type's source name uniquely identifies a type in a specific scope but not in the global scope.

The source name of a non-parametrized top-level type of the form "pkg.Cls" is "pkg.Cls".

The source name of a non-parametrized member type of the form T.InnerClass (that is, a member type InnerClass that is a member of type T) is the source name of T suffixed with by ".InnerClass", e.g. "java.util.Map.Entry", "pkg.Cls<?>.InnerClass".

The source name of a parametrized type starts with the source name of the raw type and lists the source name of all of its actual type argumenths, e.g. "java.util.List<java.lang.String>". The source name of an array type T[] is the source name of T suffixed by the appropriate number of "[]"s.

The source name of a wildcard type is the string with which it would appear in a source file. The three possible forms this can take are: "?", "? extends T", "? super T".

The source name of a type parameter is just its name.

The source name of a primitive type should be pretty obvious.

The source name of a local inner class is just its name because a local inner class is referenced, in a source file, by its name.

An anonymous inner classes does not have a source name. It will return the empty string for its source name.

Open for discussion: What should be returned by an anonymous class? Technically, the concept of a source name is irrelevant because anonymous classes may not be referred to in a source compilation unit.

getRawName

Gets the raw name of this type. Here, we define the raw name to be the fully qualified source name of the raw type.

The raw name of a parametrized top-level or member or local inner type is the source name of its type erasure, as defined by the JLS3. Think of the raw name as the source name with all parametrization stripped out.

The raw name of an array type T[] is the raw name of T suffixed by the appropriate number of "[]"s.

getVMName

Gets the VM name for this type. The JVMS3 defines an internal name format for raw classes. We call this the VM name of a type. It's useful for loading known types such as "java/lang/Object" and "java/lang/Throwable". Here is how we define the "VM name" for all types:

The VM name of a non-parametrized top-level type of the form "pkg.Cls" is "pkg/Cls".

The VM name of a non-parametrized member-level type of the form "pkg.Cls.InnerClass" is "pkg/Cls$InnerClass".

The VM name of a parametrized type is the VM name of the raw type. Because parametrization is stripped at run-time, we will omit it from the VM name.

The VM name of an array type T[] is the VM name of T suffixed by the appropriate number of "[]"s.

The VM name of a local inner class or anonymous inner class is a string that uniquely identifies it from all other types and is usually prefixed with the VM name of its directly enclosing class. For example, an anonymous inner class belonging to the type "pkg.Cls" may return "pkg/Cls$1".

getURL

If the input for this type is a *.class file, the returned URL will be for the *.class file. If the client wants a *.java URL, the client should get the source element and then ask it what it's URL is.

getTypeErasure

Gets the type erasure of this type, as defined by the JLS3. A simple way of thinking of a type erasure is that it's the "closest non-generic class" to this type. You can also think of it as the 1.4-compatible class for this type.

getUnresolvedInterfaces

When reverse engineering bytecode, some types cannot be resolved if the correct owning project is not associated to the JavaProvider. This method returns the set of interfaces this type implements in the form of UnresolvedType's.

The array of all direct compile-model inner classes, including local and anonymous classes, synthetic or not. Note that inner classes, including local and anonymous classes, are direct inner classes of the most enclosing class. Hence, inner classes declared within an inner class of the current class are not direct inner classes of the current class. Returns a collection of JavaClass's.