在Clojure中键入提示nil文字

时间:2013-11-07 20:03:16

标签: clojure null type-hinting

当传递的参数是文字nil时,如何为函数调用提示类型提示?我遇到了一种情况,我试图用多个单参数构造函数代理一个Java类,例如:

public class MyClass {
  public MyClass(String a) {...}
  public MyClass(List b) {...}
}

我想调用为我的代理服务器获取字符串参数的构造函数,但是为该参数传递一个空值。只需致电:

(proxy [MyClass] [nil] ...)

抛出异常,因为Clojure找到了多个构造函数,并且不知道要调用哪个构造函数。但是尝试添加类型提示,如下所示:

(proxy [MyClass] [^String nil] ...)

抛出异常,并显示消息“元数据只能应用于IMetas”。足够公平 - 当阅读nil字面值时,读者无需附加元数据。那么我该如何解决这个问题呢?我能够提出一个涉及let的解决方案,但它似乎相当笨拙:

(let [NIL! nil]
  (proxy [MyClass] [^String NIL!] ...))

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

可悲的是,

我不知道有什么更好的方法。有时我会在函数中调用proxy然后调用它,尽管这相当于您使用let