Witam
Może mi ktos wytłumaczyć, dlaczego statyczna metoda kopiująca powoduje wyjątek StackOverflowError
class Person {
private String name;
private String username;
public Person() {}
public Person(String name, String username) {
this.name = name;
this.username = username;
}
@Override public boolean equals(Object o) {
if(o==this) return true;
if(!(o instanceof Person)) return false;
Person p = (Person)o;
return p.name == name && p.username == username;
}
@Override public int hashCode() {
int result = 17;
result = 31*result+name.hashCode();
result = 31*result+username.hashCode();
return result;
}
public static Person newInstance(Person p) {
return Person.newInstance(p);
}
}
public class Test {
public static void main(String[] args) {
Person p1 = new Person("Jan", "Nowak");
Person p2 = new Person("Anna", "Nowak");
Person p3 = new Person("Anna", "Nowak");
System.out.println("p1.equals(p2) "+p1.equals(p2));
System.out.println("p2.equals(p3) "+p2.equals(p3));
Person p4 = p1.newInstance(p1);
System.out.println("p2.equals(p1)"+p2.equals(p1));
}
}