// Using a proper class with a private constructor to represent a day. // Barry Cornelius, 19 June 2000 import java.util. Arrays; import java.util. Iterator; import java.util. List; public class Day implements Comparable { private String iString; private int iPosition; private Day(final String pString) { iString = pString; iPosition = iNumberOfDays; } public boolean equals(final Object pObject) { if ( pObject==null || getClass()!=pObject.getClass() ) { return false; } return iPosition==((Day)pObject).iPosition; } public int hashCode() { return iPosition; } //BJCHEREFIRST public int compareTo(final Object pObject) { final Day tDay = (Day)pObject; return iPosition - tDay.iPosition; } public String toString() { return iString; } private static Day iCreateDay(final String pString) { final Day tDay = new Day(pString); iDays[iNumberOfDays] = tDay; iNumberOfDays++; return tDay; } private static int iNumberOfDays = 0; private static final Day[] iDays = new Day[7]; public static final Day monday = iCreateDay("Monday"); public static final Day tuesday = iCreateDay("Tuesday"); public static final Day wednesday = iCreateDay("Wednesday"); public static final Day thursday = iCreateDay("Thursday"); public static final Day friday = iCreateDay("Friday"); public static final Day saturday = iCreateDay("Saturday"); public static final Day sunday = iCreateDay("Sunday"); public static Day getInstance(final String pString) { for (int tDayNumber = 0; tDayNumber