У меня есть этот родовой класс Java, и я хотел бы его клонировать, чтобы выполнить его глубокое копирование.Теперь я думал, что следующий код будет работать, но в методе clone () я не могу вызвать clone () для каждого члена, который не является примитивным типом.Я попытался запросить параметры для реализации интерфейса Cloneable , но id еще не работает, он не может вызвать [first / second] .clone ().
Буду признателен за любые предложения,Заранее спасибо.
[вот код]
public class Pair<F extends Cloneable, S extends Cloneable> implements Cloneable {
private F first;
private S second;
public Pair(F a, S b) {
first = a;
second = b;
}
public F getFirst() {
return first;
}
public S getSecond() {
return second;
}
public void setFirst(F first) {
this.first = first;
}
public void setSecond(S second) {
this.second = second;
}
@Override
public String toString() {
return "["+first+", "+second+"]";
}
@Override
public boolean equals(Object o) {
if(o == null) return false;
if(o == this) return true;
if(!getClass().getName().equals(o.getClass().getName())) return false;
Pair ref = (Pair)o;
return first.equals(ref.first) && second.equals(ref.second);
}
@Override
public int hashCode() {
int hash = 7;
hash = 61 * hash + Objects.hashCode(this.first);
hash = 61 * hash + Objects.hashCode(this.second);
return hash;
}
@Override
public Object clone() {
try {
Pair<F, S> cloned = (Pair<F, S>)super.clone();
cloned.first = (F)first.clone();
cloned.second = (S)second.clone();
return cloned;
}
catch(CloneNotSupportedException e) {
return null;
}
}
}