enum Day { MON("Monday"), TUE("Tuesday"), WED("Wednesday"), THU("Thursday"), FRI("Friday"), SAT("Saturday"), SUN("Sunday"); String day; Day(String d) { day = d; } String getDay() { return day; } void setDay(String d) { this.day = d; } public static Day fromValue(String value) { for (Day type : Day.values()) { if (type.getDay().equals(value)) { return type; } } throw new IllegalArgumentException("No enum constant for value: " + value); } } interface Operation { long apply(long x, long y); } enum BasicOperation implements Operation { PLUS {public long apply(long x, long y){return x + y;}}, MINUS {public long apply(long x, long y){return x - y;}}, TIMES {public long apply(long x, long y){return x * y;}}, DIVIDE {public long apply(long x, long y){return x / y;}}; } public class Main { public static void main(String[] args) { Day d = Day.MON; d.setDay("Δευτέρα"); System.out.println(d.getDay()); d = Day.fromValue("Saturday"); System.out.println(d); int a = 4, b = 2; Operation op = BasicOperation.PLUS; System.out.print(a + " " + op + " " + b + " = " + op.apply(a, b)); } }