次のようなコードがあります。
public class Polynomial {
List<Term> term = new LinkedList<Term>();
そして term.add(anotherTerm)
、anotherTerm が... 別の Term オブジェクトのようなことをするたびに、anotherTerm は、term に挿入したものと同じものを参照しているように見えるので、anotherTerm を変更しようとするたびに term.get( 2) (たとえば) get も変更されます。
どうすればこれを防ぐことができますか?
コードが要求されたので:
//since I was lazy and didn't want to go through the extra step of Polynomial.term.add
public void insert(Term inserting) {
term.add(inserting);
}
挿入メソッドを呼び出すコード:
poly.insert(anotherTerm);
anotherTerm 用語を作成するコード:
Term anotherTerm = new Term(3, 7.6); //sets coefficient and power to 3 and 7.6
insert メソッドを呼び出す新しいコード:
poly.insert((Term)anotherTerm.clone());
clone() has protected access in java.lang.Object
残念ながら、実行した後でも、これはまだ機能しませんpublic class Term implements Cloneable{