Package org.codehaus.janino
Class IClass
- java.lang.Object
-
- 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
Nested Classes Modifier and Type Class Description classIClass.IConstructorRepresentation of a constructor of anIClass.classIClass.IFieldRepresentation of a field of thisIClass.classIClass.IInvocableBase class forIClass.IConstructorandIClass.IMethod.static interfaceIClass.IMemberBase for the members of anIClass.classIClass.IMethodRepresentation of a method in anIClass.
-
Field Summary
Fields Modifier and Type Field Description static IClassBOOLEANTheIClassobject for the primitive type BOOLEAN.static IClassBYTETheIClassobject for the primitive type BYTE.static IClassCHARTheIClassobject for the primitive type CHAR.static IClassDOUBLETheIClassobject for the primitive type DOUBLE.static IClassFLOATTheIClassobject for the primitive type FLOAT.static IClassINTTheIClassobject for the primitive type INT.static IClassLONGTheIClassobject for the primitive type LONG.static ObjectNOT_CONSTANTSpecial return value forIClass.IField.getConstantValue()indicating that the field does not have a constant value.static IClassSHORTTheIClassobject for the primitive type SHORT.static IClassVOIDTheIClassobject for the type VOID.
-
Constructor Summary
Constructors Constructor Description IClass()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected voidclearIFieldCaches()Clears the cache of declared fields which this class maintains in order to minimize the invocations ofgetDeclaredIFields2().IClass.IConstructorfindIConstructor(IClass[] parameterTypes)IClass.IMethodfindIMethod(String methodName, IClass[] parameterTypes)abstract AccessgetAccess()IClassgetArrayIClass(int n, IClass objectType)Get anIClassthat represents an n-dimensional array of this type.IClassgetArrayIClass(IClass objectType)Get anIClassthat represents an array of this type.IClassgetComponentType()protected abstract IClassgetComponentType2()IClass[]getDeclaredIClasses()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".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 ofgetDeclaredIConstructors()which must be implemented by derived classes.IClass.IFieldgetDeclaredIField(String name)Returns the namedIClass.IFielddeclared in thisIClass(does not work for inherited fields).IClass.IField[]getDeclaredIFields()Returns theIClass.IFields declared in thisIClass(but not inherited fields).protected abstract IClass.IField[]getDeclaredIFields2()Uncached version ofgetDeclaredIFields().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 ofgetDeclaredIMethods()which must be implemented by derived classes.IClassgetDeclaringIClass()protected abstract IClassgetDeclaringIClass2()StringgetDescriptor()Returns the field descriptor for the type as defined by JVMS 4.3.2.protected abstract StringgetDescriptor2()static String[]getDescriptors(IClass[] iClasses)Convenience method that determines the field descriptors of an array ofIClasses.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.
Returns the superinterfaces of the interface.
Returns "Cloneable" and "Serializable" for arrays.
Returns an empty array for primitive types and "void".protected abstract IClass[]getInterfaces2()IClassgetOuterIClass()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 classesprotected abstract IClassgetOuterIClass2()IClassgetSuperclass()Returns the superclass of the class.
Returns "null" for class "Object", interfaces, arrays, primitive types and "void".protected abstract IClassgetSuperclass2()IClass.IField[]getSyntheticIFields()Returns the synthetic fields of an anonymous or local class, in the order in which they are passed to all constructors.booleanhasIMethod(String methodName, IClass[] parameterTypes)booleanimplementsInterface(IClass that)Ifthisrepresents a class: Returntrueif this class directly or indirectly implementsthatinterface.voidinvalidateMethodCaches()This class caches the declared methods in order to minimize the invocations ofgetDeclaredIMethods2().abstract booleanisAbstract()Whether the class may be instantiated (JVMS 4.1 access_flags)abstract booleanisArray()booleanisAssignableFrom(IClass that)Determine if "this" is assignable from "that".abstract booleanisFinal()Whether subclassing is allowed (JVMS 4.1 access_flags)abstract booleanisInterface()abstract booleanisPrimitive()abstract booleanisPrimitiveNumeric()booleanisSubclassOf(IClass that)Returnstrueif this class is an immediate or non-immediate subclass ofthatclass.StringtoString()
-
-
-
Field Detail
-
NOT_CONSTANT
public static final Object NOT_CONSTANT
Special return value forIClass.IField.getConstantValue()indicating that the field does not have a constant value.
-
-
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 ofgetDeclaredIConstructors()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 ofgetDeclaredIMethods()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 anIClass.IMethodwith the given name and parameter types - Throws:
CompileException
-
findIMethod
public final IClass.IMethod findIMethod(String methodName, IClass[] parameterTypes) throws CompileException
- Returns:
- The
IClass.IMethoddeclared in thisIClass(or its superclass or the interfaces it implements) with the given name and parameter types, ornullif an applicable method could not be found - Throws:
CompileException
-
findIConstructor
public final IClass.IConstructor findIConstructor(IClass[] parameterTypes) throws CompileException
- Returns:
- The
IClass.IConstructordeclared in thisIClasswith the given parameter types, ornullif an applicable constrcutor could not be found - Throws:
CompileException
-
getDeclaredIFields
public final IClass.IField[] getDeclaredIFields()
Returns theIClass.IFields declared in thisIClass(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 namedIClass.IFielddeclared in thisIClass(does not work for inherited fields).- Returns:
nulliff thisIClassdoes not declare anIClass.IFieldwith that name
-
clearIFieldCaches
protected void clearIFieldCaches()
Clears the cache of declared fields which this class maintains in order to minimize the invocations ofgetDeclaredIFields2().
-
getDeclaredIFields2
protected abstract IClass.IField[] getDeclaredIFields2()
Uncached version ofgetDeclaredIFields().
-
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":- 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
- 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:
trueif 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:
trueif 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 ofIClasses.- 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
nullfor classes, interfaces, primitive types andvoid
-
getComponentType2
protected abstract IClass getComponentType2()
- See Also:
getComponentType()
-
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
Returnstrueif this class is an immediate or non-immediate subclass ofthatclass.- Throws:
CompileException
-
implementsInterface
public boolean implementsInterface(IClass that) throws CompileException
Ifthisrepresents a class: Returntrueif this class directly or indirectly implementsthatinterface.If
thisrepresents an interface: Returntrueif this interface directly or indirectly extendsthatinterface.- Throws:
CompileException
-
getArrayIClass
public IClass getArrayIClass(int n, IClass objectType)
Get anIClassthat represents an n-dimensional array of this type.- Parameters:
n- dimension countobjectType- Required because the superclass of an array class isObjectby definition
-
getArrayIClass
public IClass getArrayIClass(IClass objectType)
Get anIClassthat represents an array of this type.- Parameters:
objectType- Required because the superclass of an array class isObjectby definition
-
invalidateMethodCaches
public void invalidateMethodCaches()
This class caches the declared methods in order to minimize the invocations ofgetDeclaredIMethods2().
-
-