当传递的参数是文字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!] ...))
有更好的方法吗?
答案 0 :(得分:1)
可悲的是,
我不知道有什么更好的方法。有时我会在函数中调用proxy
然后调用它,尽管这相当于您使用let