Compute a Java function's signature

前端 未结 6 1780
傲寒
傲寒 2021-02-03 22:30

Is there a way to compute a Java class\'s method\'s signature? A signature
like ([Ljava/lang/String;)V represents a function that takes a

6条回答
  •  情话喂你
    2021-02-03 22:40

    It's always a set of parentheses enclosing type signifiers for the arguments, one after the other with no commas or anything, followed by a type signifier for the return value after the closing paren. It's pretty straightforward.

    There's a table of type signatures on this page:

    Signature    Java Type
    Z    boolean
    B    byte
    C    char
    S    short
    I    int
    J    long
    F    float
    D    double
    V    void
    L fully-qualified-class ;    fully-qualified-class
    [ type   type[]
    

    Those last two mean that to name a class, you say, for example, Ljava/lang/Object;, and to name an array of (for example) int, you say [I, and an array of array of int is [[I.

    If you wanted to literally compute the signature in Java code based on reflection, it'd be simple enough; just use the table above with rules for handling objects and arrays.

提交回复
热议问题