public class ClassBuilder extends Object
| Modifier and Type | Method and Description |
|---|---|
ClassBuilder |
addField(Map fieldInfo) |
ClassBuilder |
addField(String name,
int flag,
Object fieldType) |
ClassBuilder |
addField(String name,
int flag,
Object fieldType,
Object staticValue) |
ClassBuilder |
addField(String name,
int flag,
Object fieldType,
Object staticValue,
List<Map<Object,Object>> annotations)
Add a field to this class, static or not.
|
ClassBuilder |
addField(String name,
Object fieldType)
Add a public field
|
ClassBuilder |
addMethod(Map methodInfo) |
ClassBuilder |
addMethod(String name)
add a public abstract method which has no param and return void
|
ClassBuilder |
addMethod(String name,
int flag,
Object returnType)
Add an abstract method with no param
|
ClassBuilder |
addMethod(String name,
int flag,
Object returnType,
Object[] paramTypes) |
ClassBuilder |
addMethod(String name,
int flag,
Object returnType,
Object[] paramTypes,
LuaFunction func) |
ClassBuilder |
addMethod(String name,
int flag,
Object returnType,
Object[] paramTypes,
LuaFunction func,
List<Map<Object,Object>> annotations) |
ClassBuilder |
addMethod(String name,
int flag,
Object returnType,
Object[] paramTypes,
LuaFunction func,
List<Map<Object,Object>> annotations,
List<List<Map<Object,Object>>> paramAnnotations) |
ClassBuilder |
addMethod(String name,
LuaFunction function)
Add a public method which has implementation, no param and return void
|
ClassBuilder |
addMethod(String name,
Object returnType)
Add a public abstract method with no param
|
ClassBuilder |
addMethod(String name,
Object returnType,
LuaFunction function)
Add public method with implementation and no param
|
ClassBuilder |
addMethod(String name,
Object returnType,
Object[] paramTypes,
LuaFunction func)
Add public method with implementation
|
ClassBuilder |
addStaticField(String name,
Object fieldType)
Add a public static field
|
Class |
build() |
static Object |
cloneFromSuper(Class c,
Object superObject)
Alloc a object of class c and copy fields of superObject to it.
|
static ClassBuilder |
declare()
Declare a public class extending Object with generated name
|
static ClassBuilder |
declare(Map typeInfo) |
static ClassBuilder |
declare(String name)
Declare a public class extending Object
|
static ClassBuilder |
declare(String name,
Class<?> superType)
Declare a public class without interface
|
static ClassBuilder |
declare(String name,
Class<?> superType,
Object... interfaces)
Declare a public class
|
static ClassBuilder |
declare(String name,
int flag)
Declare a class extending Object
|
static ClassBuilder |
declare(String name,
int flag,
Class<?> superType)
Declare a class without interface
|
static ClassBuilder |
declare(String name,
int flag,
Class<?> superType,
Object... interfaces) |
static ClassBuilder |
declare(String name,
Object... interfaces)
Declare a public class extending Object
|
Object |
newInstance(Object superObject)
Build the class,alloc a object of class it and copy fields of superObject to it.
|
void |
setup(Object ob)
Set handlers for methods
|
public static ClassBuilder declare(Map typeInfo)
typeInfo - a map contains args named args indeclare(String, int, Class, Object[])public static ClassBuilder declare()
declare(String, int, Class, Object[])public static ClassBuilder declare(String name)
declare(String, int, Class, Object[])public static ClassBuilder declare(String name, Class<?> superType)
declare(String, int, Class, Object[])public static ClassBuilder declare(String name, int flag)
declare(String, int, Class, Object[])public static ClassBuilder declare(String name, int flag, Class<?> superType)
declare(String, int, Class, Object[])public static ClassBuilder declare(String name, Class<?> superType, Object... interfaces)
declare(String, int, Class, Object[])public static ClassBuilder declare(String name, Object... interfaces)
declare(String, int, Class, Object[])public static ClassBuilder declare(String name, int flag, Class<?> superType, Object... interfaces)
name - Class name,can be nullflag - Class modifiers,ModifiersuperType - Class to extend,null is treated as Object.class.
If the class is interface and no interfaces provided,
then the class is the only interface.
Otherwise,interface is not allowed as super classinterfaces - Interfaces to implement,nullable for lua callpublic ClassBuilder addMethod(Map methodInfo)
methodInfo - A map contains args mapped by order or nameaddMethod(String, int, Object, Object[], LuaFunction, List, List)public ClassBuilder addMethod(String name, Object returnType, Object[] paramTypes, LuaFunction func)
IllegalArgumentException - If no implementation providedaddMethod(String, int, Object, Object[], LuaFunction, List, List)public ClassBuilder addMethod(String name, LuaFunction function)
public ClassBuilder addMethod(String name, Object returnType, LuaFunction function)
public ClassBuilder addMethod(String name)
public ClassBuilder addMethod(String name, Object returnType)
public ClassBuilder addMethod(String name, int flag, Object returnType)
public ClassBuilder addMethod(String name, int flag, Object returnType, Object[] paramTypes)
public ClassBuilder addMethod(String name, int flag, Object returnType, Object[] paramTypes, LuaFunction func)
public ClassBuilder addMethod(String name, int flag, Object returnType, Object[] paramTypes, LuaFunction func, List<Map<Object,Object>> annotations)
public ClassBuilder addMethod(String name, int flag, Object returnType, Object[] paramTypes, LuaFunction func, List<Map<Object,Object>> annotations, List<List<Map<Object,Object>>> paramAnnotations)
name - Method name.flag - Method modifiers,Modifier.returnType - Method return type.paramTypes - parameter types,nullable if no arg.func - Function to implement the lua function,auto wrap,nullable for abstract methodsannotations - Method annotations,nullable, represented by an array of table
with its first element as annotation class the left
as key and value. If the annotation has the second value only,
it's treated as "value".All annotations is set to runtime type.paramAnnotations - Parameter annotations,represented by an array of annotations,nullable.public ClassBuilder addField(String name, Object fieldType)
public ClassBuilder addStaticField(String name, Object fieldType)
public ClassBuilder addField(String name, int flag, Object fieldType)
public ClassBuilder addField(String name, int flag, Object fieldType, Object staticValue)
public ClassBuilder addField(String name, int flag, Object fieldType, Object staticValue, List<Map<Object,Object>> annotations)
name - Field name.flag - Field modifiers,Modifier.fieldType - Field typestaticValue - Value can be set as static,such as enum,class,string,numberannotations - Field annotations,for more see addMethod(String, int, Object, Object[], LuaFunction, List, List)public ClassBuilder addField(Map fieldInfo)
fieldInfo - A map contains args mapped by order or nameaddField(String, int, Object, Object, List)public Class build() throws IOException, ClassNotFoundException
IOException - If failed to generate classClassNotFoundException - If failed to load classpublic void setup(Object ob) throws NoSuchFieldException, IllegalAccessException
ob - Instance of generated typeNoSuchFieldException - If it's not a generated typeIllegalAccessException - Ignoredpublic Object newInstance(Object superObject) throws Exception
ExceptioncloneFromSuper(Class, Object)public static Object cloneFromSuper(Class c, Object superObject) throws Exception
c - Class from buildsuperObject - An instance of the superTypeException