import java.util.EnumMap;
import java.util.Map;
public enum Phase {
SOLID,LIQUID,GAS;
public enum Transition{
MELT,FREEZE,BOIL,CONDENSE,SUBLIME,DEPOSIT;
// Rows indexed by src-ordinal , cols by dst-ordinal
private static final Transition[][] TRANSITIONS={
{null,MELT,SUBLIME},
{FREEZE,null,BOIL},
{DEPOSIT,CONDENSE,null}
};
//Returns the phase transition from one phase to another
public static Transition from(Phase src,Phase dst){
return TRANSITIONS[src.ordinal()][dst.ordinal()];
}
}
}
enum Phase2 {
SOLID,LIQUID,GAS;
public enum Transition{
MELT(SOLID,LIQUID),
FREEZE(LIQUID,SOLID),
BOIL(LIQUID,GAS),
CONDENSE(GAS,LIQUID),
SUBLIME(SOLID,GAS),
DEPOSIT(GAS,SOLID);
private final Phase2 src;
private final Phase2 dst;
private Transition(Phase2 src,Phase2 dst) {
this.src=src;
this.dst=dst;
}
private static final Map<Phase2,Map<Phase2, Transition>> m=new EnumMap<Phase2, Map<Phase2,Transition>>(Phase2.class);
static{
for(Phase2 p:Phase2.values()){
m.put(p, new EnumMap<Phase2, Phase2.Transition>(Phase2.class));
}
for(Transition trans:Transition.values()){
m.get(trans.src).put(trans.dst, trans);
}
}
public static Transition from(Phase src,Phase dst){
return m.get(src).get(dst);
}
}
}
java enumMap
最新推荐文章于 2025-04-01 21:36:58 发布
本文介绍了一种使用Java枚举来实现物质状态及其转换的方法。通过定义Phase枚举类及内部Transition枚举类,实现了从一种物质状态到另一种状态的转换逻辑。文中展示了两种不同的实现方式:一种使用二维数组来映射所有可能的状态转换;另一种则为每个转换创建一个实例,通过静态初始化块建立状态间的转换关系。

1516

被折叠的 条评论
为什么被折叠?



