删除.clone的反射警告

时间:2013-01-25 02:20:53

标签: java reflection clojure

如何从试图调用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受保护有关?

1 个答案:

答案 0 :(得分:2)

是的,您无法在任意clone()上拨打Object。而且,由于clone()没有公开Cloneable方法,因此以“通用”方式克隆事物有点困难。这是java早期的剩余部分之一,现在为时已晚,无法改变。如果你控制了你需要克隆的所有对象,你可以创建自己的ReallyCloneable接口来公开clone()方法,或者你可以用反射来玩自己的技巧。