У меня есть код, который выглядит так:
public class Polynomial {
List<Term> term = new LinkedList<Term>();
и кажется, что всякий раз, когда я делаю что-то вроде term.add(anotherTerm)
, когда anotherTerm является ... другим объектом Term, кажется, что anotherTerm ссылается на то же самое, что я только что вставил в термин, так что всякий раз, когда я пытаюсь изменить 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);
Код создания другого термина Срок:
Term anotherTerm = new Term(3, 7.6); //sets coefficient and power to 3 and 7.6
Новый код, вызывающий метод вставки:
poly.insert((Term)anotherTerm.clone());
К сожалению, все еще не работает из-за clone() has protected access in java.lang.Object
, даже после выполнения public class Term implements Cloneable{