6

当传递的参数是字面量时,如何对函数调用的参数进行类型提示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!] ...))

有一个更好的方法吗?

4

1 回答 1

1

可悲的是没有,

我不知道有什么更好的方法。有时我proxy在一个函数中调用然后调用它,虽然这相当于你使用let

于 2013-11-07T20:31:13.030 回答