import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
class Address {
String street;
String city;
int zip;
}
enum Status {
ACTIVE, INACTIVE, UNKNOWN
}
class Person {
Address homeAddress;
int[] favoriteNumbers;
String nickname;
LocalDate birthDate;
String notes;
Optional<String> middleName;
List<String> hobbies;
Status status;
Person() {
homeAddress = new Address();
favoriteNumbers = new int[5];
nickname = null;
birthDate = LocalDate.of(1990, 1, 1);
notes = "No notes";
middleName = Optional.empty();
hobbies = new ArrayList<>();
status = Status.UNKNOWN;
}
}
public class Main {
static void printPerson(Person p) {
System.out.println("Address: " +
p.homeAddress.street + ", " +
p.homeAddress.city + " " +
p.homeAddress.zip);
System.out.print("Favorite Numbers: ");
for (int n : p.favoriteNumbers) {
System.out.print(n + " ");
}
System.out.println();
System.out.println("Nickname: " +
(p.nickname != null ? p.nickname : "(none)"));
System.out.println("Birth Date: " + p.birthDate);
System.out.println("Notes: " + p.notes);
System.out.println("Middle Name: " +
p.middleName.orElse("(none)"));
System.out.print("Hobbies: ");
for (String h : p.hobbies) {
System.out.print(h + ", ");
}
System.out.println();
System.out.println("Status: " + p.status);
}
public static void main(String[] args) {
Person p = new Person();
p.homeAddress.street = "Fifth Avenue";
p.homeAddress.city = "New York";
p.homeAddress.zip = 423900;
p.favoriteNumbers = new int[]{7, 13, 21, 42, 99};
p.nickname = "Orion";
p.birthDate = LocalDate.of(1026, 6, 15);
p.notes = "Voss likes C/C++ and structs";
p.middleName = Optional.of("Pulse-9");
p.hobbies.add("Coding");
p.hobbies.add("Dreaming");
p.hobbies.add("Walking");
p.hobbies.add("Sci-Fi Movies");
p.status = Status.ACTIVE;
printPerson(p);
}
}
/*
run:
Address: Fifth Avenue, New York 423900
Favorite Numbers: 7 13 21 42 99
Nickname: Orion
Birth Date: 1026-06-15
Notes: Voss likes C/C++ and structs
Middle Name: Pulse-9
Hobbies: Coding, Dreaming, Walking, Sci-Fi Movies,
Status: ACTIVE
*/