📄 classprinter.java
字号:
if (programMember.u2attributesCount > 0) { println("Class member attributes (count = " + programMember.u2attributesCount + "):"); programMember.attributesAccept(programClass, this); } } public void visitLibraryField(LibraryClass libraryClass, LibraryField libraryField) { println(visitorInfo(libraryField) + " " + "Field: " + libraryField.getName(libraryClass) + " " + libraryField.getDescriptor(libraryClass)); indent(); println("Access flags: 0x" + Integer.toHexString(libraryField.u2accessFlags)); println(" = " + ClassUtil.externalFullFieldDescription(libraryField.u2accessFlags, libraryField.getName(libraryClass), libraryField.getDescriptor(libraryClass))); outdent(); } public void visitLibraryMethod(LibraryClass libraryClass, LibraryMethod libraryMethod) { println(visitorInfo(libraryMethod) + " " + "Method: " + libraryMethod.getName(libraryClass) + " " + libraryMethod.getDescriptor(libraryClass)); indent(); println("Access flags: 0x" + Integer.toHexString(libraryMethod.u2accessFlags)); println(" = " + ClassUtil.externalFullMethodDescription(libraryClass.getName(), libraryMethod.u2accessFlags, libraryMethod.getName(libraryClass), libraryMethod.getDescriptor(libraryClass))); outdent(); } // Implementations for AttributeVisitor. // Note that attributes are typically only referenced once, so we don't // test if they are marked already. public void visitUnknownAttribute(Clazz clazz, UnknownAttribute unknownAttribute) { println(visitorInfo(unknownAttribute) + " Unknown attribute (" + clazz.getString(unknownAttribute.u2attributeNameIndex) + ")"); } public void visitSourceFileAttribute(Clazz clazz, SourceFileAttribute sourceFileAttribute) { println(visitorInfo(sourceFileAttribute) + " Source file attribute:"); indent(); clazz.constantPoolEntryAccept(sourceFileAttribute.u2sourceFileIndex, this); outdent(); } public void visitSourceDirAttribute(Clazz clazz, SourceDirAttribute sourceDirAttribute) { println(visitorInfo(sourceDirAttribute) + " Source dir attribute:"); indent(); clazz.constantPoolEntryAccept(sourceDirAttribute.u2sourceDirIndex, this); outdent(); } public void visitInnerClassesAttribute(Clazz clazz, InnerClassesAttribute innerClassesAttribute) { println(visitorInfo(innerClassesAttribute) + " Inner classes attribute (count = " + innerClassesAttribute.u2classesCount + ")"); indent(); innerClassesAttribute.innerClassEntriesAccept(clazz, this); outdent(); } public void visitEnclosingMethodAttribute(Clazz clazz, EnclosingMethodAttribute enclosingMethodAttribute) { println(visitorInfo(enclosingMethodAttribute) + " Enclosing method attribute [" + clazz.getClassName(enclosingMethodAttribute.u2classIndex) + (enclosingMethodAttribute.u2nameAndTypeIndex == 0 ? "" : "." + clazz.getName(enclosingMethodAttribute.u2nameAndTypeIndex) + " " + clazz.getType(enclosingMethodAttribute.u2nameAndTypeIndex)) + "]"); } public void visitDeprecatedAttribute(Clazz clazz, DeprecatedAttribute deprecatedAttribute) { println(visitorInfo(deprecatedAttribute) + " Deprecated attribute"); } public void visitSyntheticAttribute(Clazz clazz, SyntheticAttribute syntheticAttribute) { println(visitorInfo(syntheticAttribute) + " Synthetic attribute"); } public void visitSignatureAttribute(Clazz clazz, SignatureAttribute signatureAttribute) { println(visitorInfo(signatureAttribute) + " Signature attribute:"); indent(); clazz.constantPoolEntryAccept(signatureAttribute.u2signatureIndex, this); outdent(); } public void visitConstantValueAttribute(Clazz clazz, Field field, ConstantValueAttribute constantValueAttribute) { println(visitorInfo(constantValueAttribute) + " Constant value attribute:"); clazz.constantPoolEntryAccept(constantValueAttribute.u2constantValueIndex, this); } public void visitExceptionsAttribute(Clazz clazz, Method method, ExceptionsAttribute exceptionsAttribute) { println(visitorInfo(exceptionsAttribute) + " Exceptions attribute (count = " + exceptionsAttribute.u2exceptionIndexTableLength + ")"); indent(); exceptionsAttribute.exceptionEntriesAccept((ProgramClass)clazz, this); outdent(); } public void visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute) { println(visitorInfo(codeAttribute) + " Code attribute instructions (code length = "+ codeAttribute.u4codeLength + ", locals = "+ codeAttribute.u2maxLocals + ", stack = "+ codeAttribute.u2maxStack + "):"); indent(); codeAttribute.instructionsAccept(clazz, method, this); println("Code attribute exceptions (count = " + codeAttribute.u2exceptionTableLength + "):"); codeAttribute.exceptionsAccept(clazz, method, this); println("Code attribute attributes (attribute count = " + codeAttribute.u2attributesCount + "):"); codeAttribute.attributesAccept(clazz, method, this); outdent(); } public void visitStackMapAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, StackMapAttribute stackMapAttribute) { println(visitorInfo(codeAttribute) + " Stack map attribute (count = "+ stackMapAttribute.u2stackMapFramesCount + "):"); indent(); stackMapAttribute.stackMapFramesAccept(clazz, method, codeAttribute, this); outdent(); } public void visitStackMapTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, StackMapTableAttribute stackMapTableAttribute) { println(visitorInfo(codeAttribute) + " Stack map table attribute (count = "+ stackMapTableAttribute.u2stackMapFramesCount + "):"); indent(); stackMapTableAttribute.stackMapFramesAccept(clazz, method, codeAttribute, this); outdent(); } public void visitLineNumberTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LineNumberTableAttribute lineNumberTableAttribute) { println(visitorInfo(lineNumberTableAttribute) + " Line number table attribute (count = " + lineNumberTableAttribute.u2lineNumberTableLength + ")"); indent(); lineNumberTableAttribute.lineNumbersAccept(clazz, method, codeAttribute, this); outdent(); } public void visitLocalVariableTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTableAttribute localVariableTableAttribute) { println(visitorInfo(localVariableTableAttribute) + " Local variable table attribute (count = " + localVariableTableAttribute.u2localVariableTableLength + ")"); indent(); localVariableTableAttribute.localVariablesAccept(clazz, method, codeAttribute, this); outdent(); } public void visitLocalVariableTypeTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTypeTableAttribute localVariableTypeTableAttribute) { println(visitorInfo(localVariableTypeTableAttribute) + " Local variable type table attribute (count = "+ localVariableTypeTableAttribute.u2localVariableTypeTableLength + ")"); indent(); localVariableTypeTableAttribute.localVariablesAccept(clazz, method, codeAttribute, this); outdent(); } public void visitRuntimeVisibleAnnotationsAttribute(Clazz clazz, RuntimeVisibleAnnotationsAttribute runtimeVisibleAnnotationsAttribute) { println(visitorInfo(runtimeVisibleAnnotationsAttribute) + " Runtime visible annotations attribute:"); indent(); runtimeVisibleAnnotationsAttribute.annotationsAccept(clazz, this); outdent(); } public void visitRuntimeInvisibleAnnotationsAttribute(Clazz clazz, RuntimeInvisibleAnnotationsAttribute runtimeInvisibleAnnotationsAttribute) { println(visitorInfo(runtimeInvisibleAnnotationsAttribute) + " Runtime invisible annotations attribute:"); indent(); runtimeInvisibleAnnotationsAttribute.annotationsAccept(clazz, this); outdent(); } public void visitRuntimeVisibleParameterAnnotationsAttribute(Clazz clazz, Method method, RuntimeVisibleParameterAnnotationsAttribute runtimeVisibleParameterAnnotationsAttribute) { println(visitorInfo(runtimeVisibleParameterAnnotationsAttribute) + " Runtime visible parameter annotations attribute:"); indent(); runtimeVisibleParameterAnnotationsAttribute.annotationsAccept(clazz, method, this); outdent(); } public void visitRuntimeInvisibleParameterAnnotationsAttribute(Clazz clazz, Method method, RuntimeInvisibleParameterAnnotationsAttribute runtimeInvisibleParameterAnnotationsAttribute) { println(visitorInfo(runtimeInvisibleParameterAnnotationsAttribute) + " Runtime invisible parameter annotations attribute:"); indent(); runtimeInvisibleParameterAnnotationsAttribute.annotationsAccept(clazz, method, this); outdent(); } public void visitAnnotationDefaultAttribute(Clazz clazz, Method method, AnnotationDefaultAttribute annotationDefaultAttribute) { println(visitorInfo(annotationDefaultAttribute) + " Annotation default attribute:"); indent(); annotationDefaultAttribute.defaultValueAccept(clazz, this); outdent(); } // Implementations for InnerClassesInfoVisitor. public void visitInnerClassesInfo(Clazz clazz, InnerClassesInfo innerClassesInfo) { println(visitorInfo(innerClassesInfo) + " InnerClassesInfo:"); indent(); if (innerClassesInfo.u2innerClassIndex != 0) { clazz.constantPoolEntryAccept(innerClassesInfo.u2innerClassIndex, this); } if (innerClassesInfo.u2outerClassIndex != 0) { clazz.constantPoolEntryAccept(innerClassesInfo.u2outerClassIndex, this); } if (innerClassesInfo.u2innerNameIndex != 0) { clazz.constantPoolEntryAccept(innerClassesInfo.u2innerNameIndex, this); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -