| 123456789101112131415161718192021222324252627282930313233343536373839404142 | package test;public abstract class Robot<T> {    public Robot() {}    public void performTask(T listener) {        System.out.println("Robot.performTask() called!");    }    public void performTask(T listener, CleanupTask cleanupTask) {        System.out.println("Robot.performTask() called!");        cleanupTask.cleanup();    }    /**     * MathOperation     */    @FunctionalInterface    public interface MathOperation {        public int operate(int a, int b);    }    @FunctionalInterface    public interface GreetRobot {        public void greet(Robot robot);    }    @FunctionalInterface    public interface ManufactureRobot<T extends Robot> {        public T manufacture(String robotType);    }    @FunctionalInterface    public interface CleanupTask {        public void cleanup();    }    @Override    public String toString() {        return "Robot";    }}
 |