【问题标题】:Can I use require :as with Java interop? [duplicate]我可以像 Java 互操作一样使用 require :吗? [复制]
【发布时间】:2012-09-30 00:49:31
【问题描述】:

可能重复:
Aliasing a java package name in clojure

如果我有这样的 Java API:

com.very.long.and.boring.names.Abc
com.very.long.and.boring.names.Def
com.very.long.and.boring.names.Ghi

我可以使用 Clojure (1.4.0) 中的“假”命名空间,如下所示:

(foo/Abc)
(foo/Def)
(foo/Ghi)

我不想(使用 'com.very.long.and.boring.names) 因为 Abc / Def / Ghi 可能会与我的 Clojure 函数发生冲突。所以基本上我想将“com.very.long.and.boring.names”“映射”到“foo”。

我在 REPL 尝试了几件事,但无法成功。

【问题讨论】:

    标签: map clojure namespaces


    【解决方案1】:

    我不相信这个功能还存在。

    但是,如果目的是在运行时使用 Class 对象,您总是可以这样做:

    (def s java.lang.String)
    
    (.newInstance s)
    => ""
    

    【讨论】:

      【解决方案2】:

      我想你基本上是在问同样的问题:

      Aliasing a java package name in clojure

      显然该功能实际上还不存在......

      但是,类名通常以大写字母开头,而函数名按照惯例是小写的。除非 Java 类或您的函数不遵循这些约定,否则您不应该有任何冲突。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-15
        • 1970-01-01
        • 1970-01-01
        • 2023-01-10
        • 1970-01-01
        • 2011-06-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多