我可以使用require:与Java interop一样吗?

时间:2012-09-30 00:49:31

标签: map clojure namespaces

  

可能重复:
  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尝试了几件事,但无法使其发挥作用。

2 个答案:

答案 0 :(得分:3)

我认为此功能尚不存在。

但是,如果目的是在运行时使用Class对象,则可以随时执行:

(def s java.lang.String)

(.newInstance s)
=> ""

答案 1 :(得分:2)

我认为你基本上都在问这个问题:

Aliasing a java package name in clojure

显然功能还没有实际存在......

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