package listFW.visitor; import listFW.*; /** * Sums a IList using a forward accumulation algorithm. * Demonstrates that passing a non-parameterized value through a varargs is no problem. * @author Mathias Ricken - Copyright 2008 - All rights reserved. */ public class SumIntList_Fwd implements IListAlgo { public Integer emptyCase(IMTList host, Object ... inp) { return 0; } public Integer nonEmptyCase(INEList host, Object ... inp) { return host.getRest().execute(helper, host.getFirst()); } private IListAlgo helper = new IListAlgo (){ public Integer emptyCase(IMTList host, Integer ... acc) { return acc[0]; } public Integer nonEmptyCase(INEList host, Integer ... acc) { return host.getRest().execute(this, host.getFirst() + acc[0]); } }; }