org.biojava.utils.bytecode
Class IntrospectedCodeClass

java.lang.Object
  extended by org.biojava.utils.bytecode.IntrospectedCodeClass
All Implemented Interfaces:
CodeClass

public class IntrospectedCodeClass
extends java.lang.Object
implements CodeClass

CodeClass instances that represent normal Java Class objects.

Instances of IntrospectedCodeClass are generated using the static factory methods named forClass(). These methods ensure that the same IntrospectedCodeClass instance is returned for multiple invocations with the same argument.

Author:
Thomas Down, Matthew Pocock

Method Summary
static CodeClass forClass(java.lang.Class c)
          Get the CodeClass for a Java Class.
static CodeClass forClass(java.lang.String name)
          Get the CodeClass for a Java class name.
static CodeMethod forMethod(java.lang.reflect.Method method)
           
 CodeMethod getConstructor(CodeClass[] args)
          Get a constructor by argument list.
 java.lang.String getDescriptor()
           
 CodeField getFieldByName(java.lang.String name)
          Get a field by its name.
 java.util.Set getFields()
          Get all fields accessible through this class.
 java.util.List getInterfaces()
           
 java.lang.String getJName()
           
 CodeMethod getMethod(java.lang.String name, CodeClass[] args)
          Get a method by name and argument list.
 java.util.Set getMethods()
          Get all methods declared by this class and its super classes, removing all super class methods that are over ridden.
 java.util.Set getMethodsByName(java.lang.String name)
          Get the name of all methods that could be invoked through this class with a given name.
 int getModifiers()
          Get the modifiers associated with the class.
 java.lang.String getName()
           
 CodeClass getSuperClass()
           
 boolean isArray()
          Discover if the class is an array type.
 boolean isPrimitive()
          Discover if the class represents a primitive type.
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Method Detail

forClass

public static CodeClass forClass(java.lang.Class c)
Get the CodeClass for a Java Class.

Parameters:
c - the Java Class to reflect
Returns:
a CodeClass representing the class

forClass

public static CodeClass forClass(java.lang.String name)
                          throws java.lang.ClassNotFoundException
Get the CodeClass for a Java class name.

Parameters:
name - the Java class name to reflect
Returns:
a CodeClass representing the class
Throws:
java.lang.ClassNotFoundException

forMethod

public static CodeMethod forMethod(java.lang.reflect.Method method)

getName

public java.lang.String getName()
Specified by:
getName in interface CodeClass

getJName

public java.lang.String getJName()
Specified by:
getJName in interface CodeClass

getDescriptor

public java.lang.String getDescriptor()
Specified by:
getDescriptor in interface CodeClass

getModifiers

public int getModifiers()
Description copied from interface: CodeClass
Get the modifiers associated with the class.

Specified by:
getModifiers in interface CodeClass
Returns:
the modifier integer

getSuperClass

public CodeClass getSuperClass()
Specified by:
getSuperClass in interface CodeClass

getInterfaces

public java.util.List getInterfaces()
Specified by:
getInterfaces in interface CodeClass

getMethods

public java.util.Set getMethods()
Description copied from interface: CodeClass
Get all methods declared by this class and its super classes, removing all super class methods that are over ridden.

This should return methods, regardless of their accessability.

Specified by:
getMethods in interface CodeClass
Returns:
a Set containing all methods

getFieldByName

public CodeField getFieldByName(java.lang.String name)
                         throws java.lang.NoSuchFieldException
Description copied from interface: CodeClass
Get a field by its name.

Specified by:
getFieldByName in interface CodeClass
Parameters:
name - the field name
Returns:
a CodeField representing the field
Throws:
java.lang.NoSuchFieldException - if there is no field by that name accessible through this class

getFields

public java.util.Set getFields()
Description copied from interface: CodeClass
Get all fields accessible through this class.

Specified by:
getFields in interface CodeClass
Returns:
a Set of all accessible fields

getMethodsByName

public java.util.Set getMethodsByName(java.lang.String name)
Description copied from interface: CodeClass
Get the name of all methods that could be invoked through this class with a given name.

Specified by:
getMethodsByName in interface CodeClass
Parameters:
name - the name of the method
Returns:
a Set of CodeMethod instances with that name

getMethod

public CodeMethod getMethod(java.lang.String name,
                            CodeClass[] args)
                     throws java.lang.NoSuchMethodException
Description copied from interface: CodeClass
Get a method by name and argument list.

Specified by:
getMethod in interface CodeClass
Parameters:
name - the name of the method
args - the arguments it takes
Returns:
a matching method
Throws:
java.lang.NoSuchMethodException - if there is no maching method

getConstructor

public CodeMethod getConstructor(CodeClass[] args)
                          throws java.lang.NoSuchMethodException
Description copied from interface: CodeClass
Get a constructor by argument list.

Specified by:
getConstructor in interface CodeClass
Parameters:
args - the arguments it takes
Returns:
a matching constructor
Throws:
java.lang.NoSuchMethodException - if there is no matching constructor

isPrimitive

public boolean isPrimitive()
Description copied from interface: CodeClass
Discover if the class represents a primitive type.

Specified by:
isPrimitive in interface CodeClass
Returns:
true if the class represents a primative type

isArray

public boolean isArray()
Description copied from interface: CodeClass
Discover if the class is an array type.

Specified by:
isArray in interface CodeClass
Returns:
true if the class is an array type

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object