美文网首页Java工程师知识树
Java基础-高级特性-枚举实现状态机

Java基础-高级特性-枚举实现状态机

作者: HughJin | 来源:发表于2021-01-19 09:17 被阅读0次

Java工程师知识树 / Java基础


状态机又称有限状态机,是一个建立在抽象机器上的计算模型,这个状态机在给定的时间内,只能有一个状态,而每一个状态又可以转换为其他状态(其他状态也是我们自己定义的)。

java的枚举是可以包含方法的。在枚举类中写一个抽象方法(abstract),这样枚举类中的每个成员都会继承该方法,这个就是java版实现状态机的核心所在。

实例代码:

public enum PositionState {
    LowDevelopment {
        @Override
        public PositionState nextState() {
            return MiddleDevelopment;
        }

        @Override
        public String positionDesc() {
            return "初级开发攻城狮";
        }
    },
    MiddleDevelopment {
        @Override
        public PositionState nextState() {
            return HighDevelopment;
        }

        @Override
        public String positionDesc() {
            return "中级开发攻城狮";
        }
    },
    HighDevelopment {
        @Override
        public PositionState nextState() {
            return this;
        }

        @Override
        public String positionDesc() {
            return "高级开发攻城狮";
        }
    };

    public abstract PositionState nextState();//抽象方法(abstract)

    public abstract String positionDesc();//抽象方法(abstract)

    public static void main(String[] args) {

        PositionState development = PositionState.LowDevelopment;
        System.out.println("你现在是:" + development.positionDesc());

        development = development.nextState();
        System.out.println("你现在是:" + development.positionDesc());

        development = development.nextState();
        System.out.println("你现在是:" + development.positionDesc());
    }
}

执行结果:

你现在是:初级开发攻城狮
你现在是:中级开发攻城狮
你现在是:高级开发攻城狮

相关文章

  • Java基础-高级特性-枚举实现状态机

    Java工程师知识树[https://www.jianshu.com/p/db77d19a25f6] / Ja...

  • Java基础-高级特性-枚举介绍

    Java工程师知识树[https://www.jianshu.com/p/db77d19a25f6] / Ja...

  • Java高级特性-枚举

    定义 An enum type is a special data type that enables for a...

  • 记录一些书籍

    JAVA 基础 《Java核心技术·卷1:基础知识》《Java核心技术 卷2:高级特性》《Java8 实战》 并发...

  • 编程书籍

    Java Java基础书单:《Java编程思想》《深入理解Java虚拟机:JVM高级特性与最佳实践》《Head F...

  • 使用Netty,我们到底在开发些什么?

    您可能感兴趣的文章: 大数据成神之路系列:Java高级特性增强-集合Java高级特性增强-多线程Java高级特性增...

  • 2018学习计划(JAVA)

    1 JAVA语言高级特性 (1)Java的数据结构相关的类实现原理LinkedList,ArrayList,Has...

  • 01 泛型

    1 Java语言高级特性前言 java知识是作为Android开发的语言基础,虽然现在我们已经推出了kotlin,...

  • Java中的泛型

    Java语言高级特性前言: java知识是作为Android开发的语言基础,虽然现在我们已经推出了kotlin,但...

  • Reading List

    写于2019年5月14日 编程 Java 在读 基础 Java编程思想 Java核心技术 卷II 高级特性 数据结...

网友评论

    本文标题:Java基础-高级特性-枚举实现状态机

    本文链接:https://www.haomeiwen.com/subject/spevaktx.html