public static void castToReturnType(MethodVisitor mv, MethodSignatureVisitor msign) { final String returnType; char returnOpcodeType = msign.getReturnOpcodeType(); switch (returnOpcodeType) { case 'I': returnType = AsmUtil.SIGNATURE_JAVA_LANG_INTEGER; break; case 'J': returnType = AsmUtil.SIGNATURE_JAVA_LANG_LONG; break; case 'S': returnType = AsmUtil.SIGNATURE_JAVA_LANG_SHORT; break; case 'B': returnType = AsmUtil.SIGNATURE_JAVA_LANG_BYTE; break; case 'Z': returnType = AsmUtil.SIGNATURE_JAVA_LANG_BOOLEAN; break; case 'F': returnType = AsmUtil.SIGNATURE_JAVA_LANG_FLOAT; break; case 'D': returnType = AsmUtil.SIGNATURE_JAVA_LANG_DOUBLE; break; case 'C': returnType = AsmUtil.SIGNATURE_JAVA_LANG_CHARACTER; break; case '[': returnType = msign.getReturnTypeName(); break; default: returnType = msign.getReturnType().replace('.', '/'); break; } mv.visitTypeInsn(CHECKCAST, returnType); }
public static void loadMethodReturnClass(MethodVisitor mv, MethodSignatureVisitor msign) { loadClass(mv, msign.getReturnOpcodeType(), msign.getReturnTypeName()); }