|
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 classesMethod 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
IOException
public Class evaluate()
|
Web Site | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |