11package de .codecentric .java8examples ;
22
3- import java .util . Calendar ;
4- import java .util . Date ;
3+ import java .time . LocalDate ;
4+ import java .time . Period ;
55
66/**
77 * A simple class that represents a person
@@ -12,27 +12,27 @@ public enum Gender {
1212 MALE , FEMALE
1313 }
1414
15- private final String name ;
15+ private final String firstName ;
1616 private final String lastName ;
17- private final Date birthDay ;
17+ private final LocalDate birthDay ;
1818 private Gender gender ;
1919
20- public Person (String name , String lastName , Date birthDay , Gender gender ) {
21- this .name = name ;
20+ public Person (String firstname , String lastName , LocalDate birthDay , Gender gender ) {
21+ this .firstName = firstname ;
2222 this .lastName = lastName ;
2323 this .birthDay = birthDay ;
2424 this .gender = gender ;
2525 }
2626
27- public String getName () {
28- return name ;
27+ public String getFirstName () {
28+ return firstName ;
2929 }
3030
3131 public String getLastName () {
3232 return lastName ;
3333 }
3434
35- public Date getBirthDay () {
35+ public LocalDate getBirthDay () {
3636 return birthDay ;
3737 }
3838
@@ -45,17 +45,7 @@ public void setGender(Gender gender) {
4545 }
4646
4747 public int getAge () {
48- Calendar now = Calendar .getInstance ();
49- Calendar birth = Calendar .getInstance ();
50- birth .setTime (getBirthDay ());
51-
52- int years = now .get (Calendar .YEAR ) - birth .get (Calendar .YEAR );
53- if (now .get (Calendar .MONTH ) > birth .get (Calendar .MONTH ) ||
54- now .get (Calendar .MONTH ) == birth .get (Calendar .MONTH ) && birth .get (Calendar .DATE ) > now .get (Calendar .DATE )) {
55- years --;
56- }
57-
58- return years ;
48+ return Period .between (getBirthDay (), LocalDate .now ()).getYears ();
5949 }
6050
6151 @ Override
@@ -68,14 +58,14 @@ public boolean equals(Object o) {
6858 if (birthDay != null ? !birthDay .equals (person .birthDay ) : person .birthDay != null ) return false ;
6959 if (gender != person .gender ) return false ;
7060 if (lastName != null ? !lastName .equals (person .lastName ) : person .lastName != null ) return false ;
71- if (name != null ? !name .equals (person .name ) : person .name != null ) return false ;
61+ if (firstName != null ? !firstName .equals (person .firstName ) : person .firstName != null ) return false ;
7262
7363 return true ;
7464 }
7565
7666 @ Override
7767 public int hashCode () {
78- int result = name != null ? name .hashCode () : 0 ;
68+ int result = firstName != null ? firstName .hashCode () : 0 ;
7969 result = 31 * result + (lastName != null ? lastName .hashCode () : 0 );
8070 result = 31 * result + (birthDay != null ? birthDay .hashCode () : 0 );
8171 result = 31 * result + (gender != null ? gender .hashCode () : 0 );
@@ -85,7 +75,7 @@ public int hashCode() {
8575 @ Override
8676 public String toString () {
8777 return "Person{" +
88- "name ='" + name + '\'' +
78+ "firstName ='" + firstName + '\'' +
8979 ", lastName='" + lastName + '\'' +
9080 ", birthDay=" + birthDay +
9181 ", gender=" + gender +
0 commit comments