## bsh
Class ClassGenerator

    java.lang.Object
      bsh.ClassGenerator

Direct Known Subclasses:
  ClassGeneratorImpl

public abstract class ClassGenerator
extends java.lang.Object

Constructor Summary
`ClassGenerator()`

Method Summary
`abstract java.lang.Class` `generateClass(java.lang.String name, Modifiers modifiers, java.lang.Class[] interfaces, java.lang.Class superClass, bsh.BSHBlock block, boolean isInterface, CallStack callstack, Interpreter interpreter)` Parse the BSHBlock for the class definition and generate the class.
`static ClassGenerator` `getClassGenerator()`
`abstract java.lang.Object` `invokeSuperclassMethod(BshClassManager bcm, java.lang.Object instance, java.lang.String methodName, java.lang.Object[] args)` Invoke a super.method() style superclass method on an object instance.
`abstract void` `setInstanceNameSpaceParent(java.lang.Object instance, java.lang.String className, NameSpace parent)` Change the parent of the class instance namespace.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### ClassGenerator

    public ClassGenerator()

Method Detail

### getClassGenerator

    public static ClassGenerator getClassGenerator()
                                            throws UtilEvalError

  Throws:
    `UtilEvalError`

### generateClass

    public abstract java.lang.Class generateClass(java.lang.String name,
                                                  Modifiers modifiers,
                                                  java.lang.Class[] interfaces,
                                                  java.lang.Class superClass,
                                                  bsh.BSHBlock block,
                                                  boolean isInterface,
                                                  CallStack callstack,
                                                  Interpreter interpreter)
                                           throws EvalError

  Parse the BSHBlock for the class definition and generate the class.

  Throws:
    `EvalError`

### invokeSuperclassMethod

    public abstract java.lang.Object invokeSuperclassMethod(BshClassManager bcm,
                                                            java.lang.Object instance,
                                                            java.lang.String methodName,
                                                            java.lang.Object[] args)
                                                     throws UtilEvalError,
                                                            bsh.ReflectError,
                                                            java.lang.reflect.InvocationTargetException

  Invoke a super.method() style superclass method on an object instance. This is not a normal function of the Java reflection API and is provided by generated class accessor methods.

  Throws:
    `UtilEvalError`
    `bsh.ReflectError`
    `java.lang.reflect.InvocationTargetException`

### setInstanceNameSpaceParent

    public abstract void setInstanceNameSpaceParent(java.lang.Object instance,
                                                    java.lang.String className,
                                                    NameSpace parent)

  Change the parent of the class instance namespace. This is currently used for inner class support. Note: This method will likely be removed in the future.