/
itokar98
/
HomeWorkPatternsCreationalTask1
Обзор
Документация
Войти
/
itokar98
/
HomeWorkPatternsCreationalTask1
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/Person.java
94 строки
2 KB
Ilya Tokar
First commit
16 ноя 2025, 00:53
16 ноя 2025, 00:53
8e6b772
Код
Авторство
О чём код?
public class Person { protected final String name; protected final String surname; protected int age; protected boolean ageKnown; protected String address; public Person(String name, String surname) { this.name = name; this.surname = surname; this.ageKnown = false; } public Person(String name, String surname, int age) { this.name = name; this.surname = surname; this.age = age; this.ageKnown = true; } public boolean hasAge() { return ageKnown; } public boolean hasAddress() { return address != null; } public String getName() { return name; } public String getSurname() { return surname; } public Integer getAge() { return ageKnown ? age : 0; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public void happyBirthday() { if (ageKnown) { age++; } } public PersonBuilder newChildBuilder() { return new PersonBuilder() .setSurname(this.surname) .setAddress(this.address) .setAge(0); } @Override public String toString() { return "Person{name='" + name + "', surname='" + surname + "'" + (ageKnown ? ", age=" + age : "") + (address != null ? ", address='" + address + "'" : "") + '}'; } @Override public int hashCode() { int result = name.hashCode(); result = 31 * result + surname.hashCode(); if (ageKnown) { result = 31 * result + age; } if (address != null) { result = 31 * result + address.hashCode(); } return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (!(obj instanceof Person)) return false; Person other = (Person) obj; return name.equals(other.name) && surname.equals(other.surname) && ageKnown == other.ageKnown && (!ageKnown || age == other.age) && java.util.Objects.equals(address, other.address); } }