MethodDoc сообщает, что метод не является varargs - PullRequest
2 голосов
/ 13 апреля 2019

Учитывая следующий класс:

package my.pack;

public class Foo {
    public static void varArgsMethod(Object ... arrr) {
    }
}

при анализе этого с использованием Doclet, я получаю MethodDoc для varArgsMethod, но метод isVarArgs возвращает false.Почему не возвращается true?

Код в Clojure:

(defn -start [^com.sun.javadoc.RootDoc root]
  (doseq [^com.sun.javadoc.ClassDoc c (.classes root)
          ^com.sun.javadoc.MethodDoc m (.methods c)]
    (try (println (.name m))
         (println "varargs:" (.isVarArgs m))
         (println "arity:" (count (.parameters m)))
         (println "return type:" (.returnType m))
         (catch Throwable e
           (println "something went wrong with" m))))
  true)

;; requires JDK 11 now: JAVA_HOME=~/Downloads/jdk-11.0.2.jdk/Contents/Home
(defn -main []
  (println (System/getProperty "java.home"))
  (let [dt (ToolProvider/getSystemDocumentationTool)]
    (.run dt nil nil nil
          (into-array ["-doclet" "clj_kondo.Doclet"
                       "-public"
                       "--source-path" "/tmp/"
                       "my.pack"]))))
...