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 に答える