問題タブ [cloneable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
41 参照

java - 継承元のインターフェイスで定義されているにもかかわらず、ここで throws 句を削除するオプションがあるのはなぜですか?

問題のインターフェイスはFileVisitor、このメソッドを定義する です。

私の本当に簡単な実装は次のとおりです。

このコード抽出でマークされた時点<-- HEREで、不思議なことに、IDEA (これが私の選択した IDE であるため) は、その例外を宣言する必要はないと教えてくれます...

IDEA にはバグがないわけではないので、試してみることにしました。例外を削除してコンパイルしました!だから、IDEAは正しいです。

そして、実装した場合、コードをコンパイルするために throw する必要がないことを思い出しましCloneable投げるのに。_CloneNotSupportedExceptionObject.clone()

実際、@Overrideclone() をスローするように宣言しないCloneableNotSupportedException場合でも、コンパイルされます。

しかし。

それから私はこれを試しました:

CallableスローするはずですExceptionが、これまでのところコンパイルされています。ただし、次の場合:

これはコンパイルエラーです...

何が何?


編集OK、大きな違いがあります。定義Cloneableしませclone()Objectします。

0 投票する
5 に答える
295 参照

java - オブジェクトがクローン可能 (Java) であることをコンパイラーに納得させるにはどうすればよいですか?

特定のオブジェクトのクローンを作成したい。

私がこれをしたら

o.clone() が保護されているため、これは機能しません。

代わりにこれを行うと

Cloneable は空のインターフェースであるため、どちらも機能しません。

では、クローンを作成できることをコンパイラに納得させるにはどうすればよいでしょうか?

0 投票する
0 に答える
484 参照

java - Cloneable インターフェースを使用した複雑なオブジェクトの複製

Cloneable インターフェイスを使用して複雑なオブジェクトを複製しようとしています。

Resource という名前のスーパー オブジェクトがあり、次の 2 つのフィールドがあります。

また、Cursor、HashMap、DBHelper などの複雑なフィールドを持つ Resource を拡張するこのクラス CollectionResource など:

別のインスタンスで作業する必要があるため、CollectionResource のインスタンスを複製する必要があるため、単純にこれを実行してみました。

それはうまくいくようです...しかし、私はResourceCollection内で複雑なオブジェクトを使用していて、ソースコードにディープクローンを実装していないため、理由がわかりません...

ディープ クローニングなしで機能するのはなぜですか? DBHelper、HashMap、Cursor などの複雑なオブジェクトがディープ クローニングなしでクローンされるのはなぜですか? 私はそれを適切に行っておらず、近い将来エラーが見つかると思います。

ありがとう