問題タブ [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.
java - 継承元のインターフェイスで定義されているにもかかわらず、ここで throws 句を削除するオプションがあるのはなぜですか?
問題のインターフェイスはFileVisitor
、このメソッドを定義する です。
私の本当に簡単な実装は次のとおりです。
このコード抽出でマークされた時点<-- HERE
で、不思議なことに、IDEA (これが私の選択した IDE であるため) は、その例外を宣言する必要はないと教えてくれます...
IDEA にはバグがないわけではないので、試してみることにしました。例外を削除してコンパイルしました!だから、IDEAは正しいです。
そして、実装した場合、コードをコンパイルするために throw する必要がないことを思い出しましたCloneable
。投げるのに。_CloneNotSupportedException
Object
.clone()
実際、@Override
clone() をスローするように宣言しないCloneableNotSupportedException
場合でも、コンパイルされます。
しかし。
それから私はこれを試しました:
Callable
スローするはずですException
が、これまでのところコンパイルされています。ただし、次の場合:
これはコンパイルエラーです...
何が何?
編集OK、大きな違いがあります。定義Cloneable
しませんclone()
。Object
します。
java - オブジェクトがクローン可能 (Java) であることをコンパイラーに納得させるにはどうすればよいですか?
特定のオブジェクトのクローンを作成したい。
私がこれをしたら
o.clone() が保護されているため、これは機能しません。
代わりにこれを行うと
Cloneable は空のインターフェースであるため、どちらも機能しません。
では、クローンを作成できることをコンパイラに納得させるにはどうすればよいでしょうか?
java - Cloneable インターフェースを使用した複雑なオブジェクトの複製
Cloneable インターフェイスを使用して複雑なオブジェクトを複製しようとしています。
Resource という名前のスーパー オブジェクトがあり、次の 2 つのフィールドがあります。
また、Cursor、HashMap、DBHelper などの複雑なフィールドを持つ Resource を拡張するこのクラス CollectionResource など:
別のインスタンスで作業する必要があるため、CollectionResource のインスタンスを複製する必要があるため、単純にこれを実行してみました。
それはうまくいくようです...しかし、私はResourceCollection内で複雑なオブジェクトを使用していて、ソースコードにディープクローンを実装していないため、理由がわかりません...
ディープ クローニングなしで機能するのはなぜですか? DBHelper、HashMap、Cursor などの複雑なオブジェクトがディープ クローニングなしでクローンされるのはなぜですか? 私はそれを適切に行っておらず、近い将来エラーが見つかると思います。
ありがとう