janino.net

org.codehaus.janino
Class IClass

java.lang.Object
  extended by org.codehaus.janino.IClass
Direct Known Subclasses:
ClassFileIClass

public abstract class IClass
extends Object

A simplified equivalent to "java.lang.reflect".

'JLS7' means a reference to the Java Language Specification, Java SE 7 Edition


Nested Class Summary
 class IClass.IConstructor
          Representation of a constructor of an IClass.
 class IClass.IField
          Representation of a field of this IClass.
 class IClass.IInvocable
          Base class for IClass.IConstructor and IClass.IMethod.
static interface IClass.IMember
          Base for the members of an IClass.
 class IClass.IMethod
          Representation of a method in an IClass.
 
Field Summary
static IClass BOOLEAN
          The IClass object for the primitive type BOOLEAN.
static IClass BYTE
          The IClass object for the primitive type BYTE.
static IClass CHAR
          The IClass object for the primitive type CHAR.
static IClass DOUBLE
          The IClass object for the primitive type DOUBLE.
static IClass FLOAT
          The IClass object for the primitive type FLOAT.
static IClass INT
          The IClass object for the primitive type INT.
static IClass LONG
          The IClass object for the primitive type LONG.
static Object NOT_CONSTANT
          Special return value for IClass.IField.getConstantValue() indicating that the field does not have a constant value.
static IClass SHORT
          The IClass object for the primitive type SHORT.
static IClass VOID
          The IClass object for the type VOID.
 
Constructor Summary
IClass()
           
 
Method Summary
protected  void clearIFieldCaches()
          Clears the cache of declared fields which this class maintains in order to minimize the invocations of getDeclaredIFields2().
 IClass.IConstructor findIConstructor(IClass[] parameterTypes)
           
 IClass.IMethod findIMethod(String methodName, IClass[] parameterTypes)
           
abstract  Access getAccess()
           
 IClass getArrayIClass(IClass objectType)
          Get an IClass that represents an array of this type.
 IClass getArrayIClass(int n, IClass objectType)
          Get an IClass that represents an n-dimensional array of this type.
 IClass getComponentType()
           
protected abstract  IClass getComponentType2()
           
 IClass[] getDeclaredIClasses()
          Returns the classes and interfaces declared as members of the class (but not inherited classes and interfaces).
protected abstract  IClass[] getDeclaredIClasses2()
           
 IClass.IConstructor[] getDeclaredIConstructors()
          Returns all the constructors declared by the class represented by the type.
protected abstract  IClass.IConstructor[] getDeclaredIConstructors2()
          The uncached version of getDeclaredIConstructors() which must be implemented by derived classes.
 IClass.IField getDeclaredIField(String name)
          Returns the named IClass.IField declared in this IClass (does not work for inherited fields).
 IClass.IField[] getDeclaredIFields()
          Returns the IClass.IFields declared in this IClass (but not inherited fields).
protected abstract  IClass.IField[] getDeclaredIFields2()
          Uncached version of getDeclaredIFields().
 IClass.IMethod[] getDeclaredIMethods()
          Returns the methods of the class or interface (but not inherited methods).
 IClass.IMethod[] getDeclaredIMethods(String methodName)
          Returns all methods with the given name declared in the class or interface (but not inherited methods).
protected abstract  IClass.IMethod[] getDeclaredIMethods2()
          The uncached version of getDeclaredIMethods() which must be implemented by derived classes.
 IClass getDeclaringIClass()
           
protected abstract  IClass getDeclaringIClass2()
           
 String getDescriptor()
          Returns the field descriptor for the type as defined by JVMS 4.3.2.
protected abstract  String getDescriptor2()
           
static String[] getDescriptors(IClass[] iClasses)
          Convenience method that determines the field descriptors of an array of IClasses.
 IClass.IMethod[] getIMethods()
          Returns all methods declared in the class or interface, its superclasses and its superinterfaces.
 IClass[] getInterfaces()
          Returns the interfaces implemented by the class.
protected abstract  IClass[] getInterfaces2()
           
 IClass getOuterIClass()
          The following types have an "outer class": Anonymous classes declared in a non-static method of a class Local classes declared in a non-static method of a class Non-static member classes
protected abstract  IClass getOuterIClass2()
           
 IClass getSuperclass()
          Returns the superclass of the class.
protected abstract  IClass getSuperclass2()
           
 IClass.IField[] getSyntheticIFields()
          Returns the synthetic fields of an anonymous or local class, in the order in which they are passed to all constructors.
 boolean hasIMethod(String methodName, IClass[] parameterTypes)
           
 boolean implementsInterface(IClass that)
          If this represents a class: Return true if this class directly or indirectly implements that interface.
 void invalidateMethodCaches()
          This class caches the declared methods in order to minimize the invocations of getDeclaredIMethods2().
abstract  boolean isAbstract()
          Whether the class may be instantiated (JVMS 4.1 access_flags)
abstract  boolean isArray()
           
 boolean isAssignableFrom(IClass that)
          Determine if "this" is assignable from "that".
abstract  boolean isFinal()
          Whether subclassing is allowed (JVMS 4.1 access_flags)
abstract  boolean isInterface()
           
abstract  boolean isPrimitive()
           
abstract  boolean isPrimitiveNumeric()
           
 boolean isSubclassOf(IClass that)
          Returns true if this class is an immediate or non-immediate subclass of that class.
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

NOT_CONSTANT

public static final Object NOT_CONSTANT
Special return value for IClass.IField.getConstantValue() indicating that the field does not have a constant value.


VOID

public static final IClass VOID
The IClass object for the type VOID.


BYTE

public static final IClass BYTE
The IClass object for the primitive type BYTE.


CHAR

public static final IClass CHAR
The IClass object for the primitive type CHAR.


DOUBLE

public static final IClass DOUBLE
The IClass object for the primitive type DOUBLE.


FLOAT

public static final IClass FLOAT
The IClass object for the primitive type FLOAT.


INT

public static final IClass INT
The IClass object for the primitive type INT.


LONG

public static final IClass LONG
The IClass object for the primitive type LONG.


SHORT

public static final IClass SHORT
The IClass object for the primitive type SHORT.


BOOLEAN

public static final IClass BOOLEAN
The IClass object for the primitive type BOOLEAN.

Constructor Detail

IClass

public IClass()
Method Detail

getDeclaredIConstructors

public final IClass.IConstructor[] getDeclaredIConstructors()
Returns all the constructors declared by the class represented by the type. If the class has a default constructor, it is included.

Returns an array with zero elements for an interface, array, primitive type or "void".


getDeclaredIConstructors2

protected abstract IClass.IConstructor[] getDeclaredIConstructors2()
The uncached version of getDeclaredIConstructors() which must be implemented by derived classes.


getDeclaredIMethods

public final IClass.IMethod[] getDeclaredIMethods()
Returns the methods of the class or interface (but not inherited methods). For covariant methods, only the method with the most derived return type is included.
Returns an empty array for an array, primitive type or "void".


getDeclaredIMethods2

protected abstract IClass.IMethod[] getDeclaredIMethods2()
The uncached version of getDeclaredIMethods() which must be implemented by derived classes.


getDeclaredIMethods

public final IClass.IMethod[] getDeclaredIMethods(String methodName)
Returns all methods with the given name declared in the class or interface (but not inherited methods).
Returns an empty array if no methods with that name are declared.

Returns:
an array of IClass.IMethods that must not be modified

getIMethods

public final IClass.IMethod[] getIMethods()
                                   throws CompileException
Returns all methods declared in the class or interface, its superclasses and its superinterfaces.

Returns:
an array of IClass.IMethods that must not be modified
Throws:
CompileException

hasIMethod

public final boolean hasIMethod(String methodName,
                                IClass[] parameterTypes)
                         throws CompileException
Returns:
Whether this IClass (or its superclass or the interfaces it implements) has an IClass.IMethod with the given name and parameter types
Throws:
CompileException

findIMethod

public final IClass.IMethod findIMethod(String methodName,
                                        IClass[] parameterTypes)
                                 throws CompileException
Returns:
The IClass.IMethod declared in this IClass (or its superclass or the interfaces it implements) with the given name and parameter types, or null if an applicable method could not be found
Throws:
CompileException

findIConstructor

public final IClass.IConstructor findIConstructor(IClass[] parameterTypes)
                                           throws CompileException
Returns:
The IClass.IConstructor declared in this IClass with the given parameter types, or null if an applicable constrcutor could not be found
Throws:
CompileException

getDeclaredIFields

public final IClass.IField[] getDeclaredIFields()
Returns the IClass.IFields declared in this IClass (but not inherited fields).

Returns:
An empty array for an array, primitive type or "void"

getDeclaredIField

public final IClass.IField getDeclaredIField(String name)
Returns the named IClass.IField declared in this IClass (does not work for inherited fields).

Returns:
null iff this IClass does not declare an IClass.IField with that name

clearIFieldCaches

protected void clearIFieldCaches()
Clears the cache of declared fields which this class maintains in order to minimize the invocations of getDeclaredIFields2().


getDeclaredIFields2

protected abstract IClass.IField[] getDeclaredIFields2()
Uncached version of getDeclaredIFields().


getSyntheticIFields

public IClass.IField[] getSyntheticIFields()
Returns the synthetic fields of an anonymous or local class, in the order in which they are passed to all constructors.


getDeclaredIClasses

public final IClass[] getDeclaredIClasses()
                                   throws CompileException
Returns the classes and interfaces declared as members of the class (but not inherited classes and interfaces).
Returns an empty array for an array, primitive type or "void".

Throws:
CompileException

getDeclaredIClasses2

protected abstract IClass[] getDeclaredIClasses2()
                                          throws CompileException
Returns:
The member types of this type
Throws:
CompileException

getDeclaringIClass

public final IClass getDeclaringIClass()
                                throws CompileException
Returns:
If this class is a member class, the declaring class, otherwise null
Throws:
CompileException

getDeclaringIClass2

protected abstract IClass getDeclaringIClass2()
                                       throws CompileException
Returns:
If this class is a member class, the declaring class, otherwise null
Throws:
CompileException

getOuterIClass

public final IClass getOuterIClass()
                            throws CompileException
The following types have an "outer class":

Returns:
The outer class of this type, or null
Throws:
CompileException

getOuterIClass2

protected abstract IClass getOuterIClass2()
                                   throws CompileException
Throws:
CompileException
See Also:
getOuterIClass()

getSuperclass

public final IClass getSuperclass()
                           throws CompileException
Returns the superclass of the class.
Returns "null" for class "Object", interfaces, arrays, primitive types and "void".

Throws:
CompileException

getSuperclass2

protected abstract IClass getSuperclass2()
                                  throws CompileException
Throws:
CompileException
See Also:
getSuperclass()

getAccess

public abstract Access getAccess()
Returns:
The accessibility of this type

isFinal

public abstract boolean isFinal()
Whether subclassing is allowed (JVMS 4.1 access_flags)

Returns:
true if subclassing is prohibited

getInterfaces

public final IClass[] getInterfaces()
                             throws CompileException
Returns the interfaces implemented by the class.
Returns the superinterfaces of the interface.
Returns "Cloneable" and "Serializable" for arrays.
Returns an empty array for primitive types and "void".

Throws:
CompileException

getInterfaces2

protected abstract IClass[] getInterfaces2()
                                    throws CompileException
Throws:
CompileException
See Also:
getInterfaces()

isAbstract

public abstract boolean isAbstract()
Whether the class may be instantiated (JVMS 4.1 access_flags)

Returns:
true if instantiation is prohibited

getDescriptor

public final String getDescriptor()
Returns the field descriptor for the type as defined by JVMS 4.3.2. This method is fast.


getDescriptor2

protected abstract String getDescriptor2()
Returns:
The field descriptor for the type as defined by JVMS 4.3.2.

getDescriptors

public static String[] getDescriptors(IClass[] iClasses)
Convenience method that determines the field descriptors of an array of IClasses.

See Also:
getDescriptor()

isInterface

public abstract boolean isInterface()
Returns:
Whether this type represents an interface

isArray

public abstract boolean isArray()
Returns:
Whether this type represents an array

isPrimitive

public abstract boolean isPrimitive()
Returns:
Whether this type represents a primitive type or "void"

isPrimitiveNumeric

public abstract boolean isPrimitiveNumeric()
Returns:
Whether this type represents "byte", "short", "int", "long", "char", "float" or "double"

getComponentType

public final IClass getComponentType()
Returns:
The component type of the array, or null for classes, interfaces, primitive types and void

getComponentType2

protected abstract IClass getComponentType2()
See Also:
getComponentType()

toString

public String toString()
Overrides:
toString in class Object

isAssignableFrom

public boolean isAssignableFrom(IClass that)
                         throws CompileException
Determine if "this" is assignable from "that". This is true if "this" is identical with "that" (JLS7 5.1.1), or if "that" is widening-primitive-convertible to "this" (JLS7 5.1.2), or if "that" is widening-reference-convertible to "this" (JLS7 5.1.5).

Throws:
CompileException

isSubclassOf

public boolean isSubclassOf(IClass that)
                     throws CompileException
Returns true if this class is an immediate or non-immediate subclass of that class.

Throws:
CompileException

implementsInterface

public boolean implementsInterface(IClass that)
                            throws CompileException
If this represents a class: Return true if this class directly or indirectly implements that interface.

If this represents an interface: Return true if this interface directly or indirectly extends that interface.

Throws:
CompileException

getArrayIClass

public IClass getArrayIClass(int n,
                             IClass objectType)
Get an IClass that represents an n-dimensional array of this type.

Parameters:
n - dimension count
objectType - Required because the superclass of an array class is Object by definition

getArrayIClass

public IClass getArrayIClass(IClass objectType)
Get an IClass that represents an array of this type.

Parameters:
objectType - Required because the superclass of an array class is Object by definition

invalidateMethodCaches

public void invalidateMethodCaches()
This class caches the declared methods in order to minimize the invocations of getDeclaredIMethods2().


janino.net