Ale*_*lex 6 null clojure type-hinting
当传递的参数是文字时,一个类型提示函数如何调用函数调用nil?我遇到了一种情况,我试图用多个单参数构造函数代理Java类,例如:
public class MyClass {
public MyClass(String a) {...}
public MyClass(List b) {...}
}
Run Code Online (Sandbox Code Playgroud)
我想调用为我的代理接受字符串参数的构造函数,但是为该参数传递一个null值.只需致电:
(proxy [MyClass] [nil] ...)
Run Code Online (Sandbox Code Playgroud)
抛出一个异常,因为Clojure找到了多个构造函数,并且不知道要调用哪个构造函数.但是尝试添加类型提示,如下所示:
(proxy [MyClass] [^String nil] ...)
Run Code Online (Sandbox Code Playgroud)
使用"元数据只能应用于IMetas"消息抛出异常.足够公平 - 在阅读nil文字时,读者无需附加元数据.那么我该如何解决这个问题呢?我能够提出一个涉及的解决方案let,但它似乎相当kludgy:
(let [NIL! nil]
(proxy [MyClass] [^String NIL!] ...))
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?