使用java enum的一些方法

来源:互联网 发布:金庸 神雕侠侣 知乎 编辑:程序博客网 时间:2024/05/16 00:39
package com.moden;import java.util.Arrays;import java.util.Collection;public interface IOperation {int apply (int x, int y);double apply (double x, double y);}public enum BaseOperation implements IOperation {PLUS("+") {@Overridepublic double apply(double x, double y) {return x + y;}@Overridepublic int apply(int x, int y) {return x + y;}},MINUS("-") {@Overridepublic double apply(double x, double y) {return x - y;}@Overridepublic int apply(int x, int y) {return x - y;}},TIMES("*") {@Overridepublic double apply(double x, double y) {return x * y;}@Overridepublic int apply(int x, int y) {return x * y;}},DIVID("/") {@Overridepublic double apply(double x, double y) {return x / y;}@Overridepublic int apply(int x, int y) {return x / y;}},REMINDER("%") {@Overridepublic double apply(double x, double y) {return x % y;}@Overridepublic int apply(int x, int y) {return x % y;}};private String symbol;BaseOperation(String symbol) {this.symbol = symbol;}@Overridepublic String toString() {return symbol;}public static <T extends Enum<T> & IOperation> void test(Class<T> opSet,double x, double y) {System.out.println(Arrays.asList(opSet.getEnumConstants()));for (IOperation op : opSet.getEnumConstants()) {System.out.printf("%s %s %s is %s%n", x, op, y, op.apply(x, y));}}public static <T extends Enum<T> & IOperation> void test(Class<T> opSet,int x, int y) {for (IOperation op : opSet.getEnumConstants()) {System.out.printf("%s %s %s is %s%n", x, op, y, op.apply(x, y));}}public static void test(Collection<? extends IOperation> opSet, double x, double y){for (IOperation op : opSet) {System.out.printf("%s %s %s is %s%n", x, op, y, op.apply(x, y));}}public static void main(String[] args) {//test(BaseOperation.class, 13, 5);//test(BaseOperation.class, 13.0, 6.7);test(Arrays.asList(BaseOperation.values()),13.0, 6.7);}}

0 0