【问题标题】:How can I call a java static method in clojure?如何在 clojure 中调用 java 静态方法?
【发布时间】:2011-03-24 19:34:38
【问题描述】:

我希望在 String 类上调用类。如何访问此静态方法?

【问题讨论】:

    标签: clojure


    【解决方案1】:

    您可以使用(ClassName/methodName arguments) 调用静态方法。

    但是class 不是静态方法,它是一个java 关键字,你在clojure 中不需要它。要获取与 String 类关联的 Class 对象,只需使用 String

    【讨论】:

      【解决方案2】:

      一个例子值100字:

      (. String (valueOf 1))
      

      【讨论】:

      • 如果我有一个类的实例但没有类名本身,如何调用静态方法? (. (class my-instance) staticMethod 10)。我收到错误“找不到匹配的方法 staticMethod 为类 java.lang.Class 采用 1 个参数”,即使 (class my-instance) 不返回 java.lang.Class。
      【解决方案3】:

      类没有“类”方法,也没有“类”成员。符号 String 映射到类 java.lang.String,如果你想得到的是 Java 的 String.class 的等价物。如果要调用String类的静态方法,语法为(String/methodName arg1 arg2)

      【讨论】:

        【解决方案4】:

        我想你的问题已经回答了,但是如果你真的想得到一个未知对象的类,你可以使用类函数:

        > (class "Foo")
        java.lang.String
        

        与在 java 中一样,要将 java.lang 之外的类指定为文字,您需要导入它们,或者使用点 (.) 分隔符指定完整的包 + 类名。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-10-19
          • 2015-06-17
          • 1970-01-01
          相关资源
          最近更新 更多