package com.coding.week6.exprNew;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by Administrator on 2017/4/22 0022.
*/
public enum Operator {
ADD("+", 1) {
public float apply(float x, float y){
return x + y;
}
},
SUB("-", 1) {
@Override
public float apply(float x, float y) {
return x - y;
}
},
MULT("*", 2) {
@Override
public float apply(float x, float y) {
return x * y;
}
},
DIVI("/", 2) {
@Override
public float apply(float x, float y) {
return x / y;
}
};
private String symbol;
private int priority;
Operator(String symbol, int priority) {
this.symbol = symbol;
this.priority = priority;
}
public boolean hasHigherPriority(Operator o) {
return this.priority > o.priority;
}
public String symbol() {
return symbol;
}
public static List<String> symbols() {
List<String> symbos = new ArrayList<>();
for (Operator o : Operator.values()) {
symbos.add(o.symbol);
}
return symbos;
}
public abstract float apply(float x, float y);
private static final Map<String, Operator> map = new HashMap<String, Operator>();
static {
for (Operator o : Operator.values()) {
map.put(o.symbol, o);
}
}
public static Map<String, Operator> getOperatorMap() {
return map;
}
}