温馨提示×

java enums 如何用于状态机

小樊
92
2024-08-05 22:08:20
栏目: 编程语言

在Java中,可以使用enum来定义状态机的状态。一个简单的例子如下:

public class StateMachineExample {
    
    //定义状态机的状态
    public enum State {
        START,
        PROCESSING,
        FINISHED
    }

    //初始状态为START
    private State currentState = State.START;

    //定义状态转移方法
    public void transition(State nextState) {
        currentState = nextState;
    }

    //获取当前状态
    public State getCurrentState() {
        return currentState;
    }

    public static void main(String[] args) {
        StateMachineExample stateMachine = new StateMachineExample();

        //开始状态机
        stateMachine.transition(State.PROCESSING);
        System.out.println("Current state: " + stateMachine.getCurrentState());

        //状态转移
        stateMachine.transition(State.FINISHED);
        System.out.println("Current state: " + stateMachine.getCurrentState());
    }
}

在这个例子中,我们定义了一个包含三个状态的状态机,分别是START、PROCESSING和FINISHED。在StateMachineExample类中,我们可以通过transition方法进行状态的转移,并且可以通过getCurrentState方法获取当前的状态。

通过使用enum来定义状态机的状态,可以使代码更加清晰和易于理解,并且可以避免使用magic number或者字符串来表示状态,提高代码的可维护性和可读性。

0