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 classBCELifier.FLAGSEnum corresponding to flag source.
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.StringBASE_PACKAGEprivate JavaClassclazzprivate static java.lang.StringCONSTANT_PREFIXprivate ConstantPoolGenconstantPoolGenprivate java.io.PrintWriterprintWriter
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) static JavaClassgetJavaClass(java.lang.String name)static voidmain(java.lang.String[] argv)Default main method(package private) static java.lang.StringprintArgumentTypes(Type[] argTypes)private voidprintCreate()(package private) static java.lang.StringprintFlags(int flags)static java.lang.StringprintFlags(int flags, BCELifier.FLAGS location)Return a string with the flag settingsprivate voidprintMain()(package private) static java.lang.StringprintType(java.lang.String signature)(package private) static java.lang.StringprintType(Type type)voidstart()Start Java code generationvoidvisitField(Field field)voidvisitJavaClass(JavaClass clazz)voidvisitMethod(Method method)voidvisitStackMap(StackMap stackMap)voidvisitStackMapEntry(StackMapEntry stackMapEntry)voidvisitStackMapType(StackMapType stackMapType)Visits aStackMapTypeobject.private voidvisitStackMapTypeArray(StackMapType[] types)-
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, 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
-
printWriter
private final java.io.PrintWriter printWriter
-
constantPoolGen
private final ConstantPoolGen constantPoolGen
-
-
Constructor Detail
-
BCELifier
public BCELifier(JavaClass clazz, java.io.OutputStream out)
Constructs a new instance.- Parameters:
clazz- Java class to "decompile".out- where to print the Java program in UTF-8.
-
-
Method Detail
-
getJavaClass
static JavaClass getJavaClass(java.lang.String name) throws java.lang.ClassNotFoundException, java.io.IOException
- Throws:
java.lang.ClassNotFoundExceptionjava.io.IOException
-
main
public static void main(java.lang.String[] argv) throws java.lang.ExceptionDefault main method- Throws:
java.lang.Exception
-
printArgumentTypes
static java.lang.String printArgumentTypes(Type[] argTypes)
-
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
-
printType
static java.lang.String printType(java.lang.String signature)
-
printType
static java.lang.String printType(Type type)
-
printCreate
private void printCreate()
-
printMain
private void printMain()
-
start
public void start()
Start Java code generation
-
visitField
public void visitField(Field field)
- Specified by:
visitFieldin interfaceVisitor- Overrides:
visitFieldin classEmptyVisitor
-
visitJavaClass
public void visitJavaClass(JavaClass clazz)
- Specified by:
visitJavaClassin interfaceVisitor- Overrides:
visitJavaClassin classEmptyVisitor
-
visitMethod
public void visitMethod(Method method)
- Specified by:
visitMethodin interfaceVisitor- Overrides:
visitMethodin classEmptyVisitor
-
visitStackMap
public void visitStackMap(StackMap stackMap)
- Specified by:
visitStackMapin interfaceVisitor- Overrides:
visitStackMapin classEmptyVisitor
-
visitStackMapEntry
public void visitStackMapEntry(StackMapEntry stackMapEntry)
- Specified by:
visitStackMapEntryin interfaceVisitor- Overrides:
visitStackMapEntryin classEmptyVisitor
-
visitStackMapType
public void visitStackMapType(StackMapType stackMapType)
Visits aStackMapTypeobject.- Specified by:
visitStackMapTypein interfaceVisitor- Overrides:
visitStackMapTypein classEmptyVisitor- Parameters:
stackMapType- object to visit- Since:
- 6.7.1
-
visitStackMapTypeArray
private void visitStackMapTypeArray(StackMapType[] types)
-
-