Package proguard.classfile.util
Class ClassReferenceInitializer
java.lang.Object
proguard.classfile.util.ClassReferenceInitializer
- All Implemented Interfaces:
AnnotationVisitor,ElementValueVisitor,AttributeVisitor,LocalVariableInfoVisitor,LocalVariableTypeInfoVisitor,RecordComponentInfoVisitor,ConstantVisitor,ClassVisitor,MemberVisitor
public class ClassReferenceInitializer
extends Object
implements ClassVisitor, MemberVisitor, ConstantVisitor, AttributeVisitor, RecordComponentInfoVisitor, LocalVariableInfoVisitor, LocalVariableTypeInfoVisitor, AnnotationVisitor, ElementValueVisitor
This
ClassVisitor initializes the references of all classes that it visits.
All class constant pool entries get direct references to the corresponding classes. These references make it more convenient to travel up and across the class hierarchy.
All field and method reference constant pool entries get direct references to the corresponding classes, fields, and methods.
All name and type constant pool entries get a list of direct references to the classes listed in the type.
The classpools are searched by keys and not by Clazz.getName(), so after obfuscation make sure to pass a ClassPool.refreshedCopy() to this class.
All Kotlin metadata elements get references to their corresponding Java implementation elements.
The class hierarchy must be initialized before using this visitor.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class -
Constructor Summary
ConstructorsConstructorDescriptionClassReferenceInitializer(ClassPool programClassPool, ClassPool libraryClassPool) Creates a new ClassReferenceInitializer that initializes the references of all visited class files.ClassReferenceInitializer(ClassPool programClassPool, ClassPool libraryClassPool, boolean checkAccessRules) Creates a new ClassReferenceInitializer that initializes the references of all visited class files.ClassReferenceInitializer(ClassPool programClassPool, ClassPool libraryClassPool, boolean checkAccessRules, InvalidReferenceVisitor invalidReferenceVisitor) Creates a new ClassReferenceInitializer that initializes the references of all visited class files, visiting the givenInvalidReferenceVisitorfor any broken references.ClassReferenceInitializer(ClassPool programClassPool, ClassPool libraryClassPool, boolean checkAccessRules, WarningPrinter missingClassWarningPrinter, WarningPrinter missingProgramMemberWarningPrinter, WarningPrinter missingLibraryMemberWarningPrinter, WarningPrinter dependencyWarningPrinter) Creates a new ClassReferenceInitializer that initializes the references of all visited class files, optionally printing warnings if some classes or class members can't be found or if they are in the program class pool.ClassReferenceInitializer(ClassPool programClassPool, ClassPool libraryClassPool, WarningPrinter missingClassWarningPrinter, WarningPrinter missingProgramMemberWarningPrinter, WarningPrinter missingLibraryMemberWarningPrinter, WarningPrinter dependencyWarningPrinter) Creates a new ClassReferenceInitializer that initializes the references of all visited class files, optionally printing warnings if some classes or class members can't be found or if they are in the program class pool. -
Method Summary
Modifier and TypeMethodDescriptionvoidvisitAnnotation(Clazz clazz, Annotation annotation) Visits any Annotation instance.voidvisitAnnotationDefaultAttribute(Clazz clazz, Method method, AnnotationDefaultAttribute annotationDefaultAttribute) voidvisitAnnotationElementValue(Clazz clazz, Annotation annotation, AnnotationElementValue annotationElementValue) voidvisitAnyAnnotationsAttribute(Clazz clazz, AnnotationsAttribute annotationsAttribute) Visits any AnnotationsAttribute instance.voidvisitAnyAttribute(Clazz clazz, Attribute attribute) Visits any Attribute instance.voidvisitAnyClass(Clazz clazz) Visits any Clazz instance.voidvisitAnyConstant(Clazz clazz, Constant constant) Visits any Constant instance.voidvisitAnyMethodrefConstant(Clazz clazz, AnyMethodrefConstant anyMethodrefConstant) Visits any RefConstant instance.voidvisitAnyParameterAnnotationsAttribute(Clazz clazz, Method method, ParameterAnnotationsAttribute parameterAnnotationsAttribute) Visits any ParameterAnnotationsAttribute instance.voidvisitArrayElementValue(Clazz clazz, Annotation annotation, ArrayElementValue arrayElementValue) voidvisitClassConstant(Clazz clazz, ClassConstant classConstant) voidvisitClassElementValue(Clazz clazz, Annotation annotation, ClassElementValue classElementValue) voidvisitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute) voidvisitConstantElementValue(Clazz clazz, Annotation annotation, ConstantElementValue constantElementValue) voidvisitDynamicConstant(Clazz clazz, DynamicConstant dynamicConstant) voidvisitEnclosingMethodAttribute(Clazz clazz, EnclosingMethodAttribute enclosingMethodAttribute) voidvisitEnumConstantElementValue(Clazz clazz, Annotation annotation, EnumConstantElementValue enumConstantElementValue) voidvisitFieldrefConstant(Clazz clazz, FieldrefConstant fieldrefConstant) voidvisitInvokeDynamicConstant(Clazz clazz, InvokeDynamicConstant invokeDynamicConstant) voidvisitLibraryClass(LibraryClass libraryClass) voidvisitLibraryField(LibraryClass libraryClass, LibraryField libraryField) voidvisitLibraryMethod(LibraryClass libraryClass, LibraryMethod libraryMethod) voidvisitLocalVariableInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableInfo localVariableInfo) voidvisitLocalVariableTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTableAttribute localVariableTableAttribute) voidvisitLocalVariableTypeInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTypeInfo localVariableTypeInfo) voidvisitLocalVariableTypeTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTypeTableAttribute localVariableTypeTableAttribute) voidvisitMethodHandleConstant(Clazz clazz, MethodHandleConstant methodHandleConstant) voidvisitMethodTypeConstant(Clazz clazz, MethodTypeConstant methodTypeConstant) voidvisitProgramClass(ProgramClass programClass) voidvisitProgramField(ProgramClass programClass, ProgramField programField) voidvisitProgramMethod(ProgramClass programClass, ProgramMethod programMethod) voidvisitRecordAttribute(Clazz clazz, RecordAttribute recordAttributeAttribute) voidvisitRecordComponentInfo(Clazz clazz, RecordComponentInfo recordComponentInfo) voidvisitSignatureAttribute(Clazz clazz, RecordComponentInfo recordComponentInfo, SignatureAttribute signatureAttribute) voidvisitSignatureAttribute(Clazz clazz, SignatureAttribute signatureAttribute) voidvisitSignatureAttribute(Clazz clazz, Member member, SignatureAttribute signatureAttribute) voidvisitStringConstant(Clazz clazz, StringConstant stringConstant) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface proguard.classfile.attribute.annotation.visitor.AnnotationVisitor
visitAnnotation, visitAnnotation, visitAnnotation, visitAnnotation, visitAnnotationMethods inherited from interface proguard.classfile.attribute.visitor.AttributeVisitor
visitAnyTypeAnnotationsAttribute, visitBootstrapMethodsAttribute, visitConstantValueAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitExceptionsAttribute, visitInnerClassesAttribute, visitLineNumberTableAttribute, visitMethodParametersAttribute, visitModuleAttribute, visitModuleMainClassAttribute, visitModulePackagesAttribute, visitNestHostAttribute, visitNestMembersAttribute, visitPermittedSubclassesAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleParameterAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleParameterAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSourceDebugExtensionAttribute, visitSourceDirAttribute, visitSourceFileAttribute, visitStackMapAttribute, visitStackMapTableAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitUnknownAttributeMethods inherited from interface proguard.classfile.constant.visitor.ConstantVisitor
visitAnyRefConstant, visitDoubleConstant, visitFloatConstant, visitIntegerConstant, visitInterfaceMethodrefConstant, visitLongConstant, visitMethodrefConstant, visitModuleConstant, visitNameAndTypeConstant, visitPackageConstant, visitPrimitiveArrayConstant, visitUtf8ConstantMethods inherited from interface proguard.classfile.attribute.annotation.visitor.ElementValueVisitor
visitAnyElementValueMethods inherited from interface proguard.classfile.visitor.MemberVisitor
visitAnyMember, visitLibraryMember, visitProgramMember
-
Constructor Details
-
ClassReferenceInitializer
Creates a new ClassReferenceInitializer that initializes the references of all visited class files. -
ClassReferenceInitializer
public ClassReferenceInitializer(ClassPool programClassPool, ClassPool libraryClassPool, boolean checkAccessRules) Creates a new ClassReferenceInitializer that initializes the references of all visited class files. -
ClassReferenceInitializer
public ClassReferenceInitializer(ClassPool programClassPool, ClassPool libraryClassPool, WarningPrinter missingClassWarningPrinter, WarningPrinter missingProgramMemberWarningPrinter, WarningPrinter missingLibraryMemberWarningPrinter, WarningPrinter dependencyWarningPrinter) Creates a new ClassReferenceInitializer that initializes the references of all visited class files, optionally printing warnings if some classes or class members can't be found or if they are in the program class pool. -
ClassReferenceInitializer
public ClassReferenceInitializer(ClassPool programClassPool, ClassPool libraryClassPool, boolean checkAccessRules, WarningPrinter missingClassWarningPrinter, WarningPrinter missingProgramMemberWarningPrinter, WarningPrinter missingLibraryMemberWarningPrinter, WarningPrinter dependencyWarningPrinter) Creates a new ClassReferenceInitializer that initializes the references of all visited class files, optionally printing warnings if some classes or class members can't be found or if they are in the program class pool. -
ClassReferenceInitializer
public ClassReferenceInitializer(ClassPool programClassPool, ClassPool libraryClassPool, boolean checkAccessRules, InvalidReferenceVisitor invalidReferenceVisitor) Creates a new ClassReferenceInitializer that initializes the references of all visited class files, visiting the givenInvalidReferenceVisitorfor any broken references.
-
-
Method Details
-
visitAnyClass
Description copied from interface:ClassVisitorVisits any Clazz instance. The more specific default implementations of this interface delegate to this method.- Specified by:
visitAnyClassin interfaceClassVisitor
-
visitProgramClass
- Specified by:
visitProgramClassin interfaceClassVisitor
-
visitLibraryClass
- Specified by:
visitLibraryClassin interfaceClassVisitor
-
visitProgramField
- Specified by:
visitProgramFieldin interfaceMemberVisitor
-
visitProgramMethod
- Specified by:
visitProgramMethodin interfaceMemberVisitor
-
visitLibraryField
- Specified by:
visitLibraryFieldin interfaceMemberVisitor
-
visitLibraryMethod
- Specified by:
visitLibraryMethodin interfaceMemberVisitor
-
visitAnyConstant
Description copied from interface:ConstantVisitorVisits any Constant instance. The more specific default implementations of this interface delegate to this method.- Specified by:
visitAnyConstantin interfaceConstantVisitor
-
visitStringConstant
- Specified by:
visitStringConstantin interfaceConstantVisitor
-
visitDynamicConstant
- Specified by:
visitDynamicConstantin interfaceConstantVisitor
-
visitInvokeDynamicConstant
- Specified by:
visitInvokeDynamicConstantin interfaceConstantVisitor
-
visitMethodHandleConstant
- Specified by:
visitMethodHandleConstantin interfaceConstantVisitor
-
visitFieldrefConstant
- Specified by:
visitFieldrefConstantin interfaceConstantVisitor
-
visitAnyMethodrefConstant
Description copied from interface:ConstantVisitorVisits any RefConstant instance. The more specific default implementations of this interface delegate to this method.- Specified by:
visitAnyMethodrefConstantin interfaceConstantVisitor
-
visitClassConstant
- Specified by:
visitClassConstantin interfaceConstantVisitor
-
visitMethodTypeConstant
- Specified by:
visitMethodTypeConstantin interfaceConstantVisitor
-
visitAnyAttribute
Description copied from interface:AttributeVisitorVisits any Attribute instance. The more specific default implementations of this interface delegate to this method.- Specified by:
visitAnyAttributein interfaceAttributeVisitor
-
visitRecordAttribute
- Specified by:
visitRecordAttributein interfaceAttributeVisitor
-
visitEnclosingMethodAttribute
public void visitEnclosingMethodAttribute(Clazz clazz, EnclosingMethodAttribute enclosingMethodAttribute) - Specified by:
visitEnclosingMethodAttributein interfaceAttributeVisitor
-
visitCodeAttribute
- Specified by:
visitCodeAttributein interfaceAttributeVisitor
-
visitLocalVariableTableAttribute
public void visitLocalVariableTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTableAttribute localVariableTableAttribute) - Specified by:
visitLocalVariableTableAttributein interfaceAttributeVisitor
-
visitLocalVariableTypeTableAttribute
public void visitLocalVariableTypeTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTypeTableAttribute localVariableTypeTableAttribute) - Specified by:
visitLocalVariableTypeTableAttributein interfaceAttributeVisitor
-
visitSignatureAttribute
public void visitSignatureAttribute(Clazz clazz, Member member, SignatureAttribute signatureAttribute) - Specified by:
visitSignatureAttributein interfaceAttributeVisitor
-
visitSignatureAttribute
public void visitSignatureAttribute(Clazz clazz, RecordComponentInfo recordComponentInfo, SignatureAttribute signatureAttribute) - Specified by:
visitSignatureAttributein interfaceAttributeVisitor
-
visitSignatureAttribute
- Specified by:
visitSignatureAttributein interfaceAttributeVisitor
-
visitAnyAnnotationsAttribute
Description copied from interface:AttributeVisitorVisits any AnnotationsAttribute instance. The more specific default implementations of this interface delegate to this method.- Specified by:
visitAnyAnnotationsAttributein interfaceAttributeVisitor
-
visitAnyParameterAnnotationsAttribute
public void visitAnyParameterAnnotationsAttribute(Clazz clazz, Method method, ParameterAnnotationsAttribute parameterAnnotationsAttribute) Description copied from interface:AttributeVisitorVisits any ParameterAnnotationsAttribute instance. The more specific default implementations of this interface delegate to this method.- Specified by:
visitAnyParameterAnnotationsAttributein interfaceAttributeVisitor
-
visitAnnotationDefaultAttribute
public void visitAnnotationDefaultAttribute(Clazz clazz, Method method, AnnotationDefaultAttribute annotationDefaultAttribute) - Specified by:
visitAnnotationDefaultAttributein interfaceAttributeVisitor
-
visitRecordComponentInfo
- Specified by:
visitRecordComponentInfoin interfaceRecordComponentInfoVisitor
-
visitLocalVariableInfo
public void visitLocalVariableInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableInfo localVariableInfo) - Specified by:
visitLocalVariableInfoin interfaceLocalVariableInfoVisitor
-
visitLocalVariableTypeInfo
public void visitLocalVariableTypeInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTypeInfo localVariableTypeInfo) - Specified by:
visitLocalVariableTypeInfoin interfaceLocalVariableTypeInfoVisitor
-
visitAnnotation
Description copied from interface:AnnotationVisitorVisits any Annotation instance. The more specific default implementations of this interface delegate to this method.- Specified by:
visitAnnotationin interfaceAnnotationVisitor
-
visitConstantElementValue
public void visitConstantElementValue(Clazz clazz, Annotation annotation, ConstantElementValue constantElementValue) - Specified by:
visitConstantElementValuein interfaceElementValueVisitor
-
visitEnumConstantElementValue
public void visitEnumConstantElementValue(Clazz clazz, Annotation annotation, EnumConstantElementValue enumConstantElementValue) - Specified by:
visitEnumConstantElementValuein interfaceElementValueVisitor
-
visitClassElementValue
public void visitClassElementValue(Clazz clazz, Annotation annotation, ClassElementValue classElementValue) - Specified by:
visitClassElementValuein interfaceElementValueVisitor
-
visitAnnotationElementValue
public void visitAnnotationElementValue(Clazz clazz, Annotation annotation, AnnotationElementValue annotationElementValue) - Specified by:
visitAnnotationElementValuein interfaceElementValueVisitor
-
visitArrayElementValue
public void visitArrayElementValue(Clazz clazz, Annotation annotation, ArrayElementValue arrayElementValue) - Specified by:
visitArrayElementValuein interfaceElementValueVisitor
-