Package org.apache.bcel.util
Class BCELifier
- java.lang.Object
-
- org.apache.bcel.classfile.EmptyVisitor
-
- org.apache.bcel.util.BCELifier
-
- All Implemented Interfaces:
Visitor
public class BCELifier extends EmptyVisitor
This class takes a given JavaClass object and converts it to a Java program that creates that very class using BCEL. This gives new users of BCEL a useful example showing how things are done with BCEL. It does not cover all features of BCEL, but tries to mimic hand-written code as close as possible.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
BCELifier.FLAGS
Enum corresponding to flag source.
-
Field Summary
Fields Modifier and Type Field Description private JavaClass
_clazz
private ConstantPoolGen
_cp
private java.io.PrintWriter
_out
private static java.lang.String
BASE_PACKAGE
private static java.lang.String
CONSTANT_PREFIX
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) static JavaClass
getJavaClass(java.lang.String name)
static void
main(java.lang.String[] argv)
Default main method(package private) static java.lang.String
printArgumentTypes(Type[] arg_types)
private void
printCreate()
(package private) static java.lang.String
printFlags(int flags)
static java.lang.String
printFlags(int flags, BCELifier.FLAGS location)
Return a string with the flag settingsprivate void
printMain()
(package private) static java.lang.String
printType(java.lang.String signature)
(package private) static java.lang.String
printType(Type type)
void
start()
Start Java code generationvoid
visitField(Field field)
void
visitJavaClass(JavaClass clazz)
void
visitMethod(Method method)
-
Methods inherited from class org.apache.bcel.classfile.EmptyVisitor
visitAnnotation, visitAnnotationDefault, visitAnnotationEntry, visitBootstrapMethods, visitCode, visitCodeException, visitConstantClass, visitConstantDouble, visitConstantDynamic, visitConstantFieldref, visitConstantFloat, visitConstantInteger, visitConstantInterfaceMethodref, visitConstantInvokeDynamic, visitConstantLong, visitConstantMethodHandle, visitConstantMethodref, visitConstantMethodType, visitConstantModule, visitConstantNameAndType, visitConstantPackage, visitConstantPool, visitConstantString, visitConstantUtf8, visitConstantValue, visitDeprecated, visitEnclosingMethod, visitExceptionTable, visitInnerClass, visitInnerClasses, visitLineNumber, visitLineNumberTable, visitLocalVariable, visitLocalVariableTable, visitLocalVariableTypeTable, visitMethodParameter, visitMethodParameters, visitModule, visitModuleExports, visitModuleMainClass, visitModuleOpens, visitModulePackages, visitModuleProvides, visitModuleRequires, visitNestHost, visitNestMembers, visitParameterAnnotation, visitParameterAnnotationEntry, visitSignature, visitSourceFile, visitStackMap, visitStackMapEntry, visitSynthetic, visitUnknown
-
-
-
-
Field Detail
-
BASE_PACKAGE
private static final java.lang.String BASE_PACKAGE
-
CONSTANT_PREFIX
private static final java.lang.String CONSTANT_PREFIX
-
_clazz
private final JavaClass _clazz
-
_out
private final java.io.PrintWriter _out
-
_cp
private final ConstantPoolGen _cp
-
-
Constructor Detail
-
BCELifier
public BCELifier(JavaClass clazz, java.io.OutputStream out)
- Parameters:
clazz
- Java class to "decompile"out
- where to output Java program
-
-
Method Detail
-
start
public void start()
Start Java code generation
-
visitJavaClass
public void visitJavaClass(JavaClass clazz)
- Specified by:
visitJavaClass
in interfaceVisitor
- Overrides:
visitJavaClass
in classEmptyVisitor
-
printCreate
private void printCreate()
-
printMain
private void printMain()
-
visitField
public void visitField(Field field)
- Specified by:
visitField
in interfaceVisitor
- Overrides:
visitField
in classEmptyVisitor
-
visitMethod
public void visitMethod(Method method)
- Specified by:
visitMethod
in interfaceVisitor
- Overrides:
visitMethod
in classEmptyVisitor
-
printFlags
static java.lang.String printFlags(int flags)
-
printFlags
public static java.lang.String printFlags(int flags, BCELifier.FLAGS location)
Return a string with the flag settings- Parameters:
flags
- the flags field to interpretlocation
- the item type- Returns:
- the formatted string
- Since:
- 6.0 made public
-
printArgumentTypes
static java.lang.String printArgumentTypes(Type[] arg_types)
-
printType
static java.lang.String printType(Type type)
-
printType
static java.lang.String printType(java.lang.String signature)
-
main
public static void main(java.lang.String[] argv) throws java.lang.Exception
Default main method- Throws:
java.lang.Exception
-
getJavaClass
static JavaClass getJavaClass(java.lang.String name) throws java.lang.ClassNotFoundException, java.io.IOException
- Throws:
java.lang.ClassNotFoundException
java.io.IOException
-
-