in bytekit-core/src/main/java/com/alibaba/bytekit/utils/AsmUtils.java [404:433]
public static String methodDeclaration(MethodInsnNode methodInsnNode) {
StringBuilder sb = new StringBuilder(128);
int opcode = methodInsnNode.getOpcode();
if (opcode == Opcodes.INVOKESTATIC) {
sb.append("static ");
}
Type methodType = Type.getMethodType(methodInsnNode.desc);
Type ownerType = Type.getObjectType(methodInsnNode.owner);
// skip constructor return type
if (methodInsnNode.name.equals("<init>")) {
sb.append(ownerType.getClassName());
} else {
sb.append(methodType.getReturnType().getClassName()).append(' ');
sb.append(methodInsnNode.name);
}
sb.append('(');
Type[] argumentTypes = methodType.getArgumentTypes();
for (int i = 0; i < argumentTypes.length; ++i) {
sb.append(argumentTypes[i].getClassName());
if (i != argumentTypes.length - 1) {
sb.append(", ");
}
}
sb.append(')');
return sb.toString();
}