在Clojure中键入一个nil文本

在Clojure中键入一个nil文本,clojure,null,type-hinting,Clojure,Null,Type Hinting,当传递的参数是literalnil时,一种类型如何向函数调用提示参数?我遇到了一种情况,我试图用多个单参数构造函数代理一个Java类,例如: public class MyClass { public MyClass(String a) {...} public MyClass(List b) {...} } 我想调用为代理接受字符串参数的构造函数,但为该参数传递空值。简单地说: (proxy [MyClass] [nil] ...) 引发异常,因为Clojure找到多个构造函数,但

当传递的参数是literal
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!] ...))
有更好的方法吗?

遗憾的是没有

我不知道还有什么更好的办法。有时我在函数中调用
代理
,然后调用它,尽管这相当于使用
let