Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MethodDoc将方法报告为非varargs_Java_Clojure_Doclet - Fatal编程技术网

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进行测试,但我几乎不认为这有什么关系。是的,我也没有。这是我唯一想到的。