import java.util.Date; import java.util.Calendar; import java.io.PrintWriter; public final class FlawedEmployee{ private final String name; private final int id; private final Calendar hireDate; private FlawedEmployee(String name, int id, Calendar hireDate){ this.name = name; this.id = id; this.hireDate = hireDate; } public static FlawedEmployee getEmployeeInstance(String name, int id, Calendar cal){ return new FlawedEmployee(name, id, cal); } public String getName(){ return this.name; } public int getId(){ return this.id; } public Calendar getHireDate(){ return this.hireDate; } public String printEmployee(){ return "Name: " + this.getName() + "\nID: " + this.getId() + "\nHire Date: " + this.getHireDate().getTime() + "\n"; } public static void main(String[] args){ PrintWriter pw = new PrintWriter(System.out, true); Calendar startCal = Calendar.getInstance(); FlawedEmployee joe = FlawedEmployee.getEmployeeInstance("Joe", 1, startCal); pw.println("\n== Employee Start =="); pw.println(joe.printEmployee()); pw.println("\n== Change startCal =="); startCal.set(2011, 4, 31, 12, 00); pw.println(joe.printEmployee()); pw.println("\n== Changed Retreived Date =="); Calendar mainCal = joe.getHireDate(); mainCal.set(2010, 11, 29, 12, 00); pw.println(joe.printEmployee()); } }