Java方法签名语法

Java方法签名语法,java,grammar,Java,Grammar,我正在处理一个项目,该项目要求用户输入一个方法签名。我的代码接受了这个签名,并用它做了一些事情 但是为了能够使用它做些什么,我需要将方法签名分成几部分,并将这些部分存储在相关变量中,如修饰符、methodReturnType、methodName、paramModifiers、paramType、paramName、exceptions 为了实现这一点,我手动将逻辑放入代码中。另外,我使用HashMap作为修饰符,使用TreeSet作为异常。现在,有很多方法签名的外观。因此,我的问题/疑问是:

我正在处理一个项目,该项目要求用户输入一个方法签名。我的代码接受了这个签名,并用它做了一些事情

但是为了能够使用它做些什么,我需要将方法签名分成几部分,并将这些部分存储在相关变量中,如修饰符、methodReturnType、methodName、paramModifiers、paramType、paramName、exceptions

为了实现这一点,我手动将逻辑放入代码中。另外,我使用HashMap作为修饰符,使用TreeSet作为异常。现在,有很多方法签名的外观。因此,我的问题/疑问是:

  • 我认为java内部应该有更好的方法来实现这一点。因为编译器理解Java的语法。。。或者类java.lang.reflect.Method中我无法理解的某些东西……一定有某种方法。有人知道吗
  • 我欢迎任何关于改进我现有逻辑的建议。。。我应该更喜欢其他系列而不是这个。。。或者其他任何方式。。。什么都行

  • 我想你想要的答案是这个


    您可以使用此代码实现这一点,它将遍历类的所有方法并尝试打印它们,打印它们的修饰符:

    Class<?> c = Class.forName(SomeClass.class);
    Method[] allMethods = c.getDeclaredMethods();
    
    for (Method m : allMethods) {
     out.format("%s%n", m.toGenericString());
     out.format("  Modifiers:  %s%n",Modifier.toString(m.getModifiers()));
    }
    
    Class c=Class.forName(SomeClass.Class);
    方法[]allMethods=c.getDeclaredMethods();
    对于(方法m:所有方法){
    out.format(“%s%n”,m.toGenericString());
    out.format(“修饰符:%s%n”,修饰符.toString(m.getModifiers());
    }
    

    看看这里,还有一些其他的例子

    请提供更多。这听起来正是我想要的。因此,我尝试使用它,并编写了以下代码:
    methodtypesignaturemts=SignatureParser.make().parseMethodSig(method)但是,在运行此程序时,我在sun.reflect.generics.parser.SignatureParser.error(未知源)上得到了以下异常:sun.reflect.generics.parser.SignatureParser.SignatureParser.SignatureParser.parseFormalParameters(未知源)在sun.reflect.generics.parser.SignatureParser.parseMethodTypeSignature上(未知源)在sun.reflect.generics.parser.SignatureParser.parseMethodSig(未知源)这里方法是一个字符串。
    method=“public static void main(string[]args)”;