| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | package test;import test.Robot.GreetRobot;import test.Robot.ManufactureRobot;import test.Robot.MathOperation;public class RobotFactory {    public static Robot<MathOperation> buildMathRobot() {        return new Robot<MathOperation>() {            public void performTask(MathOperation listener) {                System.out.println("Robot.performTask() called!");                int result = listener.operate(3, 4);                System.out.println("Result: " + result);            }            public void performTask(MathOperation listener, CleanupTask cleanupTask) {                System.out.println("Robot.performTask() called!");                int result = listener.operate(3, 4);                System.out.println("Result: " + result);                cleanupTask.cleanup();            }        };    }    public static Robot<GreetRobot> buildGreetRobot(Robot target) {        return new Robot<GreetRobot>() {            public void performTask(GreetRobot listener) {                System.out.println("Robot.performTask() called!");                listener.greet(target);            }            public void performTask(GreetRobot listener, CleanupTask cleanupTask) {                System.out.println("Robot.performTask() called!");                listener.greet(target);                cleanupTask.cleanup();            }        };    }    public static Robot<ManufactureRobot<Robot<GreetRobot>>> buildManufactureRobot() {        return new Robot<ManufactureRobot<Robot<GreetRobot>>>() {            public void performTask(ManufactureRobot<Robot<GreetRobot>> listener) {                System.out.println("Robot.performTask() called!");                Robot<GreetRobot> output = listener.manufacture("Greet");                System.out.println("Output: " + output.toString());            }            public void performTask(ManufactureRobot<Robot<GreetRobot>> listener, CleanupTask cleanupTask) {                System.out.println("Robot.performTask() called!");                Robot<GreetRobot> output = listener.manufacture("Greet");                System.out.println("Output: " + output.toString());                cleanupTask.cleanup();            }        };    }}
 |