import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { Main m = new Main(); List names = m.executeCommand(new GetNamesCommand()); System.out.println(names); } private R executeCommand(Command command) { return command.execute(); } } abstract class Command { public abstract R execute(); } class GetNamesCommand extends Command> { public List execute() { List names = new ArrayList(); names.add("one"); names.add("two"); names.add("three"); return names; } }