package listFW.visitor; import listFW.*; /** * Computes the last element in the host by passing the host's first down to * the host's rest and asks for help to find the last element, in the case the * host is not empty. The case of an empty host is trivial: no such element! * @author D. X. Nguyen */ public class LastElement implements IListAlgo { public static final LastElement Singleton = new LastElement (); private LastElement () { } /** * Throws an IllegalArgumentException since the empty list has no element. * @param host not used * @param input not used * @return does not return * @exception IllegalArgumentException */ public Object emptyCase(IEmptyList host, Object input) { throw new IllegalArgumentException ("Empty list has no data!"); } /** * Passes the host's fist to the host's rest and asks for help to figure out * what the last element is. * @param host a non-empty list * @param input not used * @return Object the last element in the host */ public Object nonEmptyCase(INEList host, Object input) { return host.getRest ().execute(HelpGetLast.Singleton, host.getFirst ()); } }