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();

       

    }

    版权声明:本文为小平果原创文章,转载请注明:http://blog.csdn.net/i10630226

  • 相关阅读:
    日期时间類(DateTime)的应用
    C# 排版快捷鑑
    撷取指定网址中的资料Part1:WebClinet 的用法
    Chart in Web
    Android APK反编译得到Java源代码和资源文件
    iOS 6.0 GM 版全系列固件下载
    IOS判断设备是否已越狱(isJailbroken)
    批量离线下载迅雷快传资源
    Android如何防止apk程序被反编译
    Java接口学习
  • 原文地址:https://www.cnblogs.com/dingxiaoyue/p/4948269.html
Copyright © 2011-2022 走看看