// A class that represents a topping. // Barry Cornelius, 19 June 2000 public class Topping { private String iString; private int iPosition; private Topping(final String pString) { iString = pString; iPosition = iNumberOfToppings; } public boolean equals(final Object pObject) { if ( pObject==null || getClass()!=pObject.getClass() ) { return false; } return iPosition==((Topping)pObject).iPosition; } //BJCHEREFIRST public int hashCode() { return iPosition; } public String toString() { return iString; } private static Topping iCreateTopping(final String pString) { final Topping tTopping = new Topping(pString); iToppings[iNumberOfToppings] = tTopping; iNumberOfToppings++; return tTopping; } private static int iNumberOfToppings = 0; private static final Topping[] iToppings = new Topping[9]; public static final Topping anchovies = iCreateTopping("anchovies"); public static final Topping cheese = iCreateTopping("cheese"); public static final Topping egg = iCreateTopping("egg"); public static final Topping ham = iCreateTopping("ham"); public static final Topping mushrooms = iCreateTopping("mushrooms"); public static final Topping onions = iCreateTopping("onions"); public static final Topping peppers = iCreateTopping("peppers"); public static final Topping salami = iCreateTopping("salami"); public static final Topping tomatoes = iCreateTopping("tomatoes"); public static Topping getInstance(final String pString) { for (int tToppingNumber = 0; tToppingNumber