深圳比较好的设计网站公司,各大网站网址,农业科技公司网站模板,四川网站建设设计公司使用枚举类型有一个很好的方法来实现这种效果。基本思想是利用枚举类型可以通过为 opcode 类型定义一个接口#xff0c;并实现任意接口。
// Emulated extensible enum using an interface
public interface Operation {double apply(double x, double y);
}
public enum Ba… 使用枚举类型有一个很好的方法来实现这种效果。基本思想是利用枚举类型可以通过为 opcode 类型定义一个接口并实现任意接口。
// Emulated extensible enum using an interface
public interface Operation {double apply(double x, double y);
}
public enum BasicOperation implements Operation {PLUS() {public double apply(double x, double y) { return x y; }},MINUS(-) {public double apply(double x, double y) { return x - y; }},TIMES(*) {public double apply(double x, double y) { return x * y; }},DIVIDE(/) {public double apply(double x, double y) { return x / y; }};private final String symbol;BasicOperation(String symbol) {this.symbol symbol;}Override public String toString() {return symbol;}
} 虽然枚举类型 BasicOperation 不可扩展但接口类型 Operation 是可以扩展的并且它是用于表示 API 中的操作的接口类型。 你可以定义另一个实现此接口的枚举类型并使用此新类型的实例来代替基本类型。
// Emulated extension enum
public enum ExtendedOperation implements Operation {EXP(^) {public double apply(double x, double y) {return Math.pow(x, y);}},REMAINDER(%) {public double apply(double x, double y) {return x % y;}};private final String symbol;ExtendedOperation(String symbol) {this.symbol symbol;}Override public String toString() {return symbol;}
}