Clojure代理和@Override?

Zub*_*air 2 clojure

在Java中,如果要覆盖某些内容,有时会使用@Override.你怎么能在Clojure代理中做同样的事情?

Bri*_*ham 5

在代理每一个方法应该重写超类方法或接口方法,所以这是从一个Java类,您可以添加新的方法略有不同的情况.所以,如果Clojure中提供了一个方法,以纪念代理方法的覆盖,则所有有效的代理将有标注为每个方法.

不幸的是,Clojure将允许您在代理中定义一个方法,该方法不属于代理覆盖的任何类或接口.但是,该方法在正常使用中不可调用或可访问.

  • 不:您无法确保使用代理覆盖现有方法,例如使用java @Override注释:(proxy [Object] [](nonExistingBaseMethod []"Foo")) (2认同)
  • 我编写了我的答案来解释为什么Clojure没有注释(代理中的每个方法都有它),并指出它不会阻止你定义不覆盖任何东西的函数. (2认同)