private void parseClassMethods()

in tools/erlanalysis/src/main/java/org/apache/dubbo/erlang/analysis/parse/ParseJarInterfaceInfo.java [113:156]


    private void parseClassMethods(Class classObj, InterfaceInfo interfaceInfo) {
        Method[] methodsList = classObj.getDeclaredMethods();
        for (int i = 0; i < methodsList.length; i++) {
            Method method = methodsList[i];
            MethodInfo methodInfo = new MethodInfo();
            methodInfo.setName(method.getName());
            String methodDescriptor = Type.getMethodDescriptor(method);
            methodInfo.setMethodDescriptor(methodDescriptor);

            int tmpIndex = methodDescriptor.indexOf(")");
            String argsDescriptor = methodDescriptor.substring(1, tmpIndex);
            String returnDescriptor = methodDescriptor.substring(tmpIndex);
            methodInfo.setArgsType(argsDescriptor);
            methodInfo.setReturnType(returnDescriptor);

            methodInfo.setArgsLength(Type.getArgumentTypes(method).length);

            Parameter[] parameters = method.getParameters();
            String[] paramterNames = new String[parameters.length];
            for (int index = 0; index < parameters.length; index++) {
                paramterNames[index] = parameters[index].getName();
            }
            methodInfo.setParameterName(paramterNames);
//          通过asm获取存在为null的情况。
//            try {
//                String[] paramterNames = MethodParseUtil.getMethodParamNames(method);
//                methodInfo.setParameterName(paramterNames);
//            } catch (IOException e) {
//                logger.warn("无法获取参数名称",e);
//                Parameter[] parameters = method.getParameters();
//                String[] paramterNames=new String[parameters.length];
//                for(int index=0;index<parameters.length;index++){
//                    paramterNames[i]=parameters[i].getName();
//                }
//                methodInfo.setParameterName(paramterNames);
//            }


            interfaceInfo.addMethods(methodInfo);

            checkCommonType(Type.getArgumentTypes(method));
            checkCommonType(Type.getReturnType(method));
        }
    }