public class StaticInitMerger extends ClassVisitor
ClassVisitor that merges <clinit> methods into a single one. All the existing
<clinit> methods are renamed, and a new one is created, which calls all the renamed
methods.api, cv| Modifier | Constructor and Description |
|---|---|
protected |
StaticInitMerger(int api,
java.lang.String prefix,
ClassVisitor classVisitor)
Constructs a new
StaticInitMerger. |
|
StaticInitMerger(java.lang.String prefix,
ClassVisitor classVisitor)
Constructs a new
StaticInitMerger. |
| Modifier and Type | Method and Description |
|---|---|
void |
visit(int version,
int access,
java.lang.String name,
java.lang.String signature,
java.lang.String superName,
java.lang.String[] interfaces)
Visits the header of the class.
|
void |
visitEnd()
Visits the end of the class.
|
MethodVisitor |
visitMethod(int access,
java.lang.String name,
java.lang.String descriptor,
java.lang.String signature,
java.lang.String[] exceptions)
Visits a method of the class.
|
visitAnnotation, visitAttribute, visitField, visitInnerClass, visitModule, visitNestHost, visitNestMember, visitOuterClass, visitPermittedSubclass, visitRecordComponent, visitSource, visitTypeAnnotationpublic StaticInitMerger(java.lang.String prefix,
ClassVisitor classVisitor)
StaticInitMerger. Subclasses must not use this constructor.
Instead, they must use the StaticInitMerger(int, String, ClassVisitor) version.prefix - the prefix to use to rename the existing <clinit> methods.classVisitor - the class visitor to which this visitor must delegate method calls. May be
null.protected StaticInitMerger(int api,
java.lang.String prefix,
ClassVisitor classVisitor)
StaticInitMerger.api - the ASM API version implemented by this visitor. Must be one of Opcodes.ASM4, Opcodes.ASM5, Opcodes.ASM6, Opcodes.ASM7, Opcodes.ASM8 or Opcodes.ASM9.prefix - the prefix to use to rename the existing <clinit> methods.classVisitor - the class visitor to which this visitor must delegate method calls. May be
null.public void visit(int version,
int access,
java.lang.String name,
java.lang.String signature,
java.lang.String superName,
java.lang.String[] interfaces)
ClassVisitorvisit in class ClassVisitorversion - the class version. The minor version is stored in the 16 most significant bits,
and the major version in the 16 least significant bits.access - the class's access flags (see Opcodes). This parameter also indicates if
the class is deprecated Opcodes.ACC_DEPRECATED or a record Opcodes.ACC_RECORD.name - the internal name of the class (see Type.getInternalName()).signature - the signature of this class. May be null if the class is not a
generic one, and does not extend or implement generic classes or interfaces.superName - the internal of name of the super class (see Type.getInternalName()).
For interfaces, the super class is Object. May be null, but only for the
Object class.interfaces - the internal names of the class's interfaces (see Type.getInternalName()). May be null.public MethodVisitor visitMethod(int access, java.lang.String name, java.lang.String descriptor, java.lang.String signature, java.lang.String[] exceptions)
ClassVisitorMethodVisitor
instance (or null) each time it is called, i.e., it should not return a previously
returned visitor.visitMethod in class ClassVisitoraccess - the method's access flags (see Opcodes). This parameter also indicates if
the method is synthetic and/or deprecated.name - the method's name.descriptor - the method's descriptor (see Type).signature - the method's signature. May be null if the method parameters,
return type and exceptions do not use generic types.exceptions - the internal names of the method's exception classes (see Type.getInternalName()). May be null.public void visitEnd()
ClassVisitorvisitEnd in class ClassVisitor