下面列出了怎么用org.objectweb.asm.util.TraceSignatureVisitor的API类实例代码及写法,或者点击链接到github查看源代码。
/**
* Converts the given type signature to a human readable type string.
* <p>
* Example: {@code Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>; -> java.util.Map<java.lang.String, java.lang.String>}
*/
public static String toReadableType(final String type) {
final SignatureReader reader = new SignatureReader(type);
final TraceSignatureVisitor visitor = new TraceSignatureVisitor(0);
reader.acceptType(visitor);
return visitor.getDeclaration();
}
@Override
public void visitLocalVariable(final String name, final String desc,
final String signature, final Label start, final Label end,
final int index) {
buf.setLength(0);
if (signature != null) {
buf.append(tab2);
appendDescriptor(FIELD_SIGNATURE, signature);
TraceSignatureVisitor sv = new TraceSignatureVisitor(0);
SignatureReader r = new SignatureReader(signature);
r.acceptType(sv);
buf.append(tab2).append("// declaration: ")
.append(sv.getDeclaration()).append('\n');
}
buf.append(tab2).append("LOCALVARIABLE ").append(name).append(' ');
appendDescriptor(FIELD_DESCRIPTOR, desc);
buf.append(' ');
appendLabel(start);
buf.append(' ');
appendLabel(end);
buf.append(' ').append(index).append('\n');
text.add(buf.toString());
}
public String getDeclaration() {
TraceSignatureVisitor visitor = new TraceSignatureVisitor(0);
new SignatureReader(getDesc()).accept(visitor);
return getName() + visitor.getDeclaration();
}
public String getReturnType() {
TraceSignatureVisitor visitor = new TraceSignatureVisitor(0);
new SignatureReader(getDesc()).accept(visitor);
return visitor.getReturnType();
}