Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.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 如何使用clojure'生成静态方法;s级?_Java_Clojure_Static_Static Methods_Gen Class - Fatal编程技术网

Java 如何使用clojure'生成静态方法;s级?

Java 如何使用clojure'生成静态方法;s级?,java,clojure,static,static-methods,gen-class,Java,Clojure,Static,Static Methods,Gen Class,在我的Clojure代码中,我想生成一个包含静态方法(名为staticMethod)的类文件,该方法稍后由Java程序在静态上下文中调用 我试过(Clojure): 和(爪哇): 我读到: 通过向方法声明中添加元数据(通过#^{:static true}) 您还可以定义静态方法 无论我把#^{:static true}放在哪里,Java编译器总是说: 无法对非静态方法进行静态引用 TestGenClass类型中的staticMethod(String,String) 如何在Clojure中定义静

在我的Clojure代码中,我想生成一个包含静态方法(名为
staticMethod
)的类文件,该方法稍后由Java程序在静态上下文中调用

我试过(Clojure):

和(爪哇):

我读到:

通过向方法声明中添加元数据(通过#^{:static true}) 您还可以定义静态方法

无论我把
#^{:static true}
放在哪里,Java编译器总是说:

无法对非静态方法进行静态引用 TestGenClass类型中的staticMethod(String,String)


如何在Clojure中定义静态方法?
#^{:static true}
^:static
的意思是否相同?这是在哪里记录的?

当kotka说要注释方法声明时,他“显然”是指包含声明的整个向量:

:methods [^:static [staticMethod [String String] String] ]

不幸的是,这种简洁的措词是Clojure文档的典型特征。

您究竟尝试将元数据放在哪里?顺便说一句,你最后一个问题的答案很简单:好吧——如果你唯一尝试过的方法是你当前问题的陈述方式,那么试试以下方法:
:methods[^:static[staticMethod[String]String]]
试着按照我在上面的评论中指定的注释:不是符号,而是向量。实际上,开头的句子是这样说的“符号和集合支持元数据”。不,这意味着符号和集合都可以包含元数据。您只需要注意用元数据注释的内容。当您说
(meta m)时
,您查询的是
m
引用的对象的元数据,而不是符号
m
。这是因为只有
m
计算的是集合,而不是符号。
package com.stackoverflow.clojure;

public class TestGenClassTest {

    private TestGenClassTest() {
    }

    public static void main(String[] args) {
        TestGenClass.staticMethod("Static call from Java!", " :END");
    }
}
:methods [^:static [staticMethod [String String] String] ]