Listing A
import java.io.IOException; import java.util.LinkedList; import java.util.List; import java.util.Iterator; public class Scheduler { private List todoList = new LinkedList(); public long getTotalDuration() throws Exception { long total = 0L; for (Iterator i=todoList.iterator(); i.hasNext(); ) { total += ((Task)(i.next())).getDuration(); } return total; } public void main(String[] args) { Scheduler s = new Scheduler(); s.todoList.add(new DownloadTask("http://google.com")); try { System.out.println(s.getTotalDuration()); } catch (Exception doh) { doh.printStackTrace(); } } } interface Task { long getDuration() throws Exception;} class DownloadTask implements Task { private String url; public DownloadTask(String u) { url = u; } public long getDuration() throws IOException { // this may throw an IOException } }