March 28, 2020
By: Kevin

clojure.reflect

使用clojure.reflect迅速获得Java的'文档'

查JavaDoc挺麻烦的, 而且很多时候看看函数签名就够了...


(->> ""
     clojure.reflect/reflect
     :members
     (filter #(contains? (:flags %) :public))
     (map #(select-keys % [:name :parameter-types :return-type]))
     clojure.pprint/print-table)

可以获得String类中的所有公有属性. clojure.reflect/reflect 的参数可以是一个java class, 也可以是一个java class 的instance.

对于不太熟悉的Class, 尤其有用


|                  :name |                                       :parameter-types |               :return-type |
|------------------------+--------------------------------------------------------+----------------------------|
|             replaceAll |                    [java.lang.String java.lang.String] |           java.lang.String |
| CASE_INSENSITIVE_ORDER |                                                        |                            |
|         codePointCount |                                              [int int] |                        int |
|    resolveConstantDesc |                [java.lang.invoke.MethodHandles$Lookup] |           java.lang.String |
|               getChars |                                   [int int char<> int] |                       void |
|          regionMatches |                         [int java.lang.String int int] |                    boolean |
|                isEmpty |                                                     [] |                    boolean |
|            codePointAt |                                                  [int] |                        int |
|            lastIndexOf |                                     [java.lang.String] |                        int |
|             startsWith |                                 [java.lang.String int] |                    boolean |
|       java.lang.String |                                               [byte<>] |                            |
|                 charAt |                                                  [int] |                       char |
|               getBytes |                                                     [] |                     byte<> |
|                  split |                                     [java.lang.String] |         java.lang.String<> |
|                valueOf |                                                 [long] |           java.lang.String |
|                 intern |                                                     [] |           java.lang.String |
|                   join |            [java.lang.CharSequence java.lang.Iterable] |           java.lang.String |
|              compareTo |                                     [java.lang.String] |                        int |
|               hashCode |                                                     [] |                        int |
|       java.lang.String |                              [java.lang.StringBuilder] |                            |
|           stripLeading |                                                     [] |           java.lang.String |
|                indexOf |                                     [java.lang.String] |                        int |
|                 format |                  [java.lang.String java.lang.Object<>] |           java.lang.String |
|                indexOf |                                              [int int] |                        int |
|                indexOf |                                 [java.lang.String int] |                        int |
|       java.lang.String |                                        [int<> int int] |                            |
|               toString |                                                     [] |           java.lang.String |
|              substring |                                              [int int] |           java.lang.String |
|               getBytes |                                   [int int byte<> int] |                       void |
|            lastIndexOf |                                 [java.lang.String int] |                        int |
|                 indent |                                                  [int] |           java.lang.String |
|                valueOf |                                                [float] |           java.lang.String |
|             startsWith |                                     [java.lang.String] |                    boolean |
|                replace |                                            [char char] |           java.lang.String |
|            lastIndexOf |                                              [int int] |                        int |
|                indexOf |                                                  [int] |                        int |
|                  chars |                                                     [] | java.util.stream.IntStream |
|                isBlank |                                                     [] |                    boolean |
|               getBytes |                             [java.nio.charset.Charset] |                     byte<> |
|       java.lang.String |              [byte<> int int java.nio.charset.Charset] |                            |
|                 format | [java.util.Locale java.lang.String java.lang.Object<>] |           java.lang.String |
|                  lines |                                                     [] |    java.util.stream.Stream |
|              transform |                          [java.util.function.Function] |           java.lang.Object |
|          contentEquals |                               [java.lang.StringBuffer] |                    boolean |
|            copyValueOf |                                       [char<> int int] |           java.lang.String |
|       java.lang.String |                              [byte<> java.lang.String] |                            |
|                 concat |                                     [java.lang.String] |           java.lang.String |
|                valueOf |                                                 [char] |           java.lang.String |
|        codePointBefore |                                                  [int] |                        int |
|                   trim |                                                     [] |           java.lang.String |
|                valueOf |                                               [char<>] |           java.lang.String |
|       java.lang.String |                                                     [] |                            |
|       java.lang.String |                                           [byte<> int] |                            |
|       java.lang.String |                               [java.lang.StringBuffer] |                            |
|              formatted |                                   [java.lang.Object<>] |           java.lang.String |
|                valueOf |                                                  [int] |           java.lang.String |
|       java.lang.String |                      [byte<> int int java.lang.String] |                            |
|                valueOf |                                               [double] |           java.lang.String |
|       java.lang.String |                                       [char<> int int] |                            |
|       java.lang.String |                                               [char<>] |                            |
|              compareTo |                                     [java.lang.Object] |                        int |
|    compareToIgnoreCase |                                     [java.lang.String] |                        int |
|           replaceFirst |                    [java.lang.String java.lang.String] |           java.lang.String |
|      describeConstable |                                                     [] |         java.util.Optional |
|               contains |                               [java.lang.CharSequence] |                    boolean |
|               endsWith |                                     [java.lang.String] |                    boolean |
|                valueOf |                                              [boolean] |           java.lang.String |
|                 repeat |                                                  [int] |           java.lang.String |
|       java.lang.String |                                   [byte<> int int int] |                            |
|                matches |                                     [java.lang.String] |                    boolean |
|       equalsIgnoreCase |                                     [java.lang.String] |                    boolean |
|     offsetByCodePoints |                                              [int int] |                        int |
|            toLowerCase |                                                     [] |           java.lang.String |
|    resolveConstantDesc |                [java.lang.invoke.MethodHandles$Lookup] |           java.lang.Object |
|                valueOf |                                     [java.lang.Object] |           java.lang.String |
|            toUpperCase |                                                     [] |           java.lang.String |
|       java.lang.String |                                     [java.lang.String] |                            |
|          regionMatches |                 [boolean int java.lang.String int int] |                    boolean |
|            toUpperCase |                                     [java.util.Locale] |           java.lang.String |
|          stripTrailing |                                                     [] |           java.lang.String |
|       java.lang.String |                      [byte<> java.nio.charset.Charset] |                            |
|            toCharArray |                                                     [] |                     char<> |
|              substring |                                                  [int] |           java.lang.String |
|            toLowerCase |                                     [java.util.Locale] |           java.lang.String |
|                 equals |                                     [java.lang.Object] |                    boolean |
|            stripIndent |                                                     [] |           java.lang.String |
|                replace |        [java.lang.CharSequence java.lang.CharSequence] |           java.lang.String |
|                  strip |                                                     [] |           java.lang.String |
|             codePoints |                                                     [] | java.util.stream.IntStream |
|                valueOf |                                       [char<> int int] |           java.lang.String |
|            lastIndexOf |                                                  [int] |                        int |
|       translateEscapes |                                                     [] |           java.lang.String |
|                 length |                                                     [] |                        int |
|                  split |                                 [java.lang.String int] |         java.lang.String<> |
|            subSequence |                                              [int int] |     java.lang.CharSequence |
|                   join |      [java.lang.CharSequence java.lang.CharSequence<>] |           java.lang.String |
|          contentEquals |                               [java.lang.CharSequence] |                    boolean |
|            copyValueOf |                                               [char<>] |           java.lang.String |
|       java.lang.String |                                       [byte<> int int] |                            |
|               getBytes |                                     [java.lang.String] |                     byte<> |
Tags: clojure