Java MethodDoc将方法报告为非varargs
鉴于以下类别:Java MethodDoc将方法报告为非varargs,java,clojure,doclet,Java,Clojure,Doclet,鉴于以下类别: package my.pack; public class Foo { public static void varArgsMethod(Object ... arrr) { } } 当使用Doclet分析时,我得到varArgsMethod的MethodDoc,但方法isVarArgs返回false。为什么它不返回true Clojure中的代码: (defn -start [^com.sun.javadoc.RootDoc root] (doseq [
package my.pack;
public class Foo {
public static void varArgsMethod(Object ... arrr) {
}
}
当使用Doclet
分析时,我得到varArgsMethod
的MethodDoc
,但方法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"]))))
完全随机猜测:这可能与Clojure将Java var arg方法视为具有单个数组参数这一事实有关吗?我不认为它的Clojure端与
.isVarArgs
的操作有任何关系,但我也不知道该方法是如何工作的。在Java中运行相同的代码时会得到不同的结果吗?我必须将其重写为Java进行测试,但我几乎不认为这有什么关系。是的,我也没有。这是我唯一想到的。