zoukankan      html  css  js  c++  java
  • java 基础之枚举

    问题:对象的某个属性的值不能是随意的,必须为固定的一组取值当中的某一个

    解决的方法:

    1)  在setGrade方法中做推断,不符合格式要求就抛出异常

    2)  直接限定用户的选择,通过自己定义类模拟枚举的方式来限定用户的输入

        写一个Grade类。私有构造函数,对外提供5个静态的常量表示类的实例

    3)  jdk5中新定义了枚举类型,专门用于解决此类问题

    4)  枚举就是一个特殊的java类,能够定义属性、方法、构造函数、实现接口、继承类

    packagecn.itcast.enumeration;

    import org.junit.Test;

    publicclass Demo1 {

        @Test

        public void test() {

           print(Grade.B);

        }

       

        public void print(Grade g) // A B C D E

        {

           String value=g.getValue();

           System.out.println(value);

        }

    }

    /*

     * class Grade{ private Grade(){ }

     * public static final Grade A=new Grade();

     * public static final Grade B=new Grade();

     * public static final Grade C=new Grade();

     * public static final Grade D=new Grade();

     * public static final Grade E=new Grade();

     *  }

     */

    //怎样定义枚举的构造函数、方法、字段

    enumGrade {// class A 100-90 B 89-80 C 79-70 D 69-60 E 59-0

        A("100-90"), B("89-80"),C("79-70"), D("69-60"), E("59-0");// object

        private String value;

        private Grade(String value){

           this.value=value;

        }

        public String getValue(){

           return this.value;

        }

    }

    publicclass Demo1 {

        @Test

        public void test() {

           print(Grade.B);   //89-80,良

        }

       

        public void print(Grade g) // A B C D E

        {

           String value=g.getValue();

           String value2=g.localeValue();

          

           System.out.println(value+","+value2);

        }

    }

    //带抽象方法的枚举

    enumGrade {// class A 100-90优 B89-80良 C 79-70 一般D 69-60差 E 59-0不及格

        A("100-90"){

           public String localeValue(){

               return "优";

           }

        },

        B("89-80"){

           public String localeValue(){

               return "良";

           }

        },

        C("79-70"){

           public String localeValue(){

               return "一般";

           }

        },

        D("69-60"){

           public String localeValue(){

               return "差";

           }

        },

        E("59-0"){

           public String localeValue(){

               return "不及格";

           }

        };// object

       

        private String value;

        private Grade(String value){

           this.value=value;

        }

        public String getValue(){

           return this.value;

        }

        public abstract String localeValue();

    }

    //枚举类就是一个java类。也能够声明属性。方法,构造函数

    public enum Grade4 {

        A("90-100"),B("80-89"),C("70-79"),D("60-69"),E("0-59");

       

        privateString value;

        privateGrade4(String value) {

           this.value= value;

        }

       

        publicString getValue() {

           returnvalue;

        }

    }

    //枚举类就是一个java类, 也能够继承抽象和实现接口

    public enum Grade5 {

        // 抽象类不能创建实例对象

        A("90-100"){

           //new了一个Grade5的子类实例

           publicString toLocaleString() {

               return"优";

           }

        }

        ,B("80-89"){

           //new了一个Grade5的子类实例

           publicString toLocaleString() {

               return"良";

           }

        }

        ,C("70-79"){

           //new了一个Grade5的子类实例

           publicString toLocaleString() {

               return"中";

           }

        }

        ,D("60-69"){

           //new了一个Grade5的子类实例

           publicString toLocaleString() {

               return"差";

           }

        }

        ,E("0-59"){

           //new了一个Grade5的子类实例

           publicString toLocaleString() {

               return"不及格";

           }

        };

       

        privateString value;

        privateGrade5(String value) {

           this.value= value;

        }

       

        publicString getValue() {

           returnvalue;

        }

       

        // 对外提供一个方法。返回枚举的本地信息

        // 一个方法不知道怎样实现,能够定义为抽象的

        publicabstract String toLocaleString();

       

    }

  • 相关阅读:
    领域驱动设计学习笔记
    Entity Framework 入门
    2019秋招复习笔记--面试经历记录总结
    Windows10 系统更新之后找不到输入法
    jumper-server-部署官网版
    docker java环境 直接做成镜像 跑自己的java包
    联想thinkpad如何关闭触摸板
    docker 安装
    阿里yum源与华为yum源的配置
    Backbone简介
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/6690116.html
Copyright © 2011-2022 走看看