枚举里面的实现类,重写方法,一个枚举就可以搞定。
public enum GunsEnum {
AK("ak47"){
@Override
public void shot() {
System.out.println("ak47 发射了一枚子弹");
}
},
An("an94"){
@Override
public void shot() {
System.out.println("an94 发射了一枚子弹");
}
},
M4("M4A1"){
@Override
public void shot() {
System.out.println("M4A1 发射了一枚子弹");
}
},
;
@Getter
private String name;
GunsEnum(String name) {
this.name = name;
}
public void shot(){
throw new RuntimeException();
}
public static GunsEnum match(String type){
return Arrays.stream(GunsEnum.values())
.filter(o-> Objects.equals(o.getName(),type))
.findFirst()
.orElseThrow(()->new NoSuchElementException("no match GunsEnum by name["+type+"]"));
}
}
使用方式
public static void main(String[] args){
GunsEnum.AK.shot();
GunsEnum.match("M4A1").shot();
}