|
Web Site | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.codehaus.janino.EvaluatorBase
org.codehaus.janino.ClassBodyEvaluator
Parses a class body and returns it as a java.lang.Class object ready for use with java.lang.reflect.
Example:
import java.util.*;
static private int a = 1;
private int b = 2;
public void func(int c, int d) {
return func2(c, d);
}
private static void func2(int e, int f) {
return e * f;
}
| Constructor Summary | |
ClassBodyEvaluator(Scanner scanner,
Class optionalExtendedType,
Class[] implementedTypes,
ClassLoader optionalParentClassLoader)
See ClassBodyEvaluator(Scanner, String, Class, Class[], ClassLoader). |
|
ClassBodyEvaluator(Scanner scanner,
ClassLoader optionalParentClassLoader)
See ClassBodyEvaluator(Scanner, String, Class, Class[], ClassLoader). |
|
ClassBodyEvaluator(Scanner scanner,
String className,
Class optionalExtendedType,
Class[] implementedTypes,
ClassLoader optionalParentClassLoader)
Parse and compile a class body, i.e. |
|
ClassBodyEvaluator(String classBody)
See ClassBodyEvaluator(Scanner, String, Class, Class[], ClassLoader). |
|
ClassBodyEvaluator(String optionalFileName,
InputStream is)
See ClassBodyEvaluator(Scanner, String, Class, Class[], ClassLoader). |
|
ClassBodyEvaluator(String optionalFileName,
Reader reader)
See ClassBodyEvaluator(Scanner, String, Class, Class[], ClassLoader). |
|
| Method Summary | |
static Object |
createFastClassBodyEvaluator(Scanner scanner,
Class optionalBaseType,
ClassLoader optionalClassLoader)
Compiles a class body and instantiates it. |
static Object |
createFastClassBodyEvaluator(Scanner scanner,
String className,
Class optionalExtendedType,
Class[] implementedTypes,
ClassLoader optionalParentClassLoader)
Like createFastClassBodyEvaluator(Scanner, Class, ClassLoader),
but gives you more control over the generated class (rarely needed in practice). |
Class |
evaluate()
Returns the java.lang.Class object compiled from the class body. |
| Methods inherited from class org.codehaus.janino.EvaluatorBase |
addClassMethodBlockDeclaration, addPackageMemberClassDeclaration, classesToTypes, classToType, compileAndLoad, compileAndLoad, makeFormalParameters, parseImportDeclarations |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
public ClassBodyEvaluator(String classBody)
throws CompileException,
Parser.ParseException,
Scanner.ScanException
ClassBodyEvaluator(Scanner, String, Class, Class[], ClassLoader).
public ClassBodyEvaluator(String optionalFileName,
InputStream is)
throws CompileException,
Parser.ParseException,
Scanner.ScanException,
IOException
ClassBodyEvaluator(Scanner, String, Class, Class[], ClassLoader).
public ClassBodyEvaluator(String optionalFileName,
Reader reader)
throws CompileException,
Parser.ParseException,
Scanner.ScanException,
IOException
ClassBodyEvaluator(Scanner, String, Class, Class[], ClassLoader).
public ClassBodyEvaluator(Scanner scanner,
ClassLoader optionalParentClassLoader)
throws CompileException,
Parser.ParseException,
Scanner.ScanException,
IOException
ClassBodyEvaluator(Scanner, String, Class, Class[], ClassLoader).
public ClassBodyEvaluator(Scanner scanner,
Class optionalExtendedType,
Class[] implementedTypes,
ClassLoader optionalParentClassLoader)
throws CompileException,
Parser.ParseException,
Scanner.ScanException,
IOException
ClassBodyEvaluator(Scanner, String, Class, Class[], ClassLoader).
public ClassBodyEvaluator(Scanner scanner,
String className,
Class optionalExtendedType,
Class[] implementedTypes,
ClassLoader optionalParentClassLoader)
throws CompileException,
Parser.ParseException,
Scanner.ScanException,
IOException
The optionalClassLoader serves two purposes:
ByteArrayClassLoader, or by creation of a temporary
ByteArrayClassLoader if not.
String, an InputStream or a Reader
instead of a Scanner.
scanner - Source of tokensclassName - The name of the temporary class (uncritical)optionalExtendedType - Class to extend or nullimplementedTypes - Interfaces to implementoptionalParentClassLoader - Loads referenced classes| Method Detail |
public static Object createFastClassBodyEvaluator(Scanner scanner,
Class optionalBaseType,
ClassLoader optionalClassLoader)
throws CompileException,
Parser.ParseException,
Scanner.ScanException,
IOException
optionalBaseType.
Example:
public interface Foo {
int bar(int a, int b);
}
...
Foo f = (Foo) ClassBodyEvaluator.createFastClassBodyEvaluator(
new Scanner(null, new StringReader("public int bar(int a, int b) { return a + b; }")),
Foo.class,
(ClassLoader) null // Use current thread's context class loader
);
System.out.println("1 + 2 = " + f.bar(1, 2));
Notice: The optionalBaseType must either be declared public,
or with package scope in the root package (i.e. "no" package).
scanner - Source of class body tokensoptionalBaseType - Base type to extend/implement (see above)optionalClassLoader -
optionalBaseType
CompileException
Parser.ParseException
Scanner.ScanException
IOException
public static Object createFastClassBodyEvaluator(Scanner scanner,
String className,
Class optionalExtendedType,
Class[] implementedTypes,
ClassLoader optionalParentClassLoader)
throws CompileException,
Parser.ParseException,
Scanner.ScanException,
IOException
createFastClassBodyEvaluator(Scanner, Class, ClassLoader),
but gives you more control over the generated class (rarely needed in practice).
Notice: The optionalExtendedType and the implementedTypes
must either be declared public, or with package scope in the same
package as className.
scanner - Source of class body tokensclassName - Name of generated classoptionalExtendedType - Class to extendimplementedTypes - Interfaces to implementoptionalParentClassLoader - Loads referenced classes
optionalExtendedType and implements the given implementedTypes
CompileException
Parser.ParseException
Scanner.ScanException
IOExceptionpublic Class evaluate()
|
Web Site | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||