public abstract class Op { private final String name; private Op(String name) { this.name = name; } public String toString() { return name; } abstract boolean compareTo(int x, int y); public static final Op EQ = new Op("=") { boolean compareTo(int x, int y) { return x == y; } }; public static final Op NE = new Op("=") { boolean compareTo(int x, int y) { return x != y; } }; public static final Op GT = new Op("=") { boolean compareTo(int x, int y) { return x > y; } }; public static final Op GE = new Op("=") { boolean compareTo(int x, int y) { return x >= y; } }; public static final Op LT = new Op("=") { boolean compareTo(int x, int y) { return x < y; } }; public static final Op LE = new Op("=") { boolean compareTo(int x, int y) { return x <= y; } }; }