0

如何从此尝试调用 Java 克隆方法的 Clojure 代码中删除反射警告:

(defn clone-foo [m]
  (.clone m))
=> Reflection warning, NO_SOURCE_PATH:2 - reference to field clone can't be resolved.

当然,如果 m 是它的任何实例,java.lang.Object它必须具有该clone方法吗?

clone被保护有关系吗?

4

1 回答 1

2

是的,您不能随意clone()调用Object. 而且,由于该clone()方法没有被 暴露Cloneable,因此以“通用”方式克隆事物有些困难。这是 Java 早期遗留下来的部分之一,此时更改为时已晚。如果您控制需要克隆的所有对象,则可以创建自己的ReallyCloneable接口来公开该clone()方法,或者您可以使用反射玩自己的技巧。

于 2013-01-25T02:47:15.387 回答