A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李志广 中级黑马   /  2012-8-11 10:28  /  1799 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package cn.itcast.enumration;

import org.junit.Test;

public class Demo2 {
        @Test
        public void test(){
                print(Grade1.A);
        }
        public void print(Grade1 g){
                String value=g.localValue();
                System.out.println(value);
        }
        @Test
        public void test2(){
                System.out.println(Grade.A.name());
                System.out.println(Grade.E.ordinal());
                String str="C";
                Grade g=Grade.valueOf(str);
                System.out.println(g);
        }

}
enum Grade1{
        A("100-90"){
                public  String localValue(){
                        return "优";
                }
        },
        B("89-80"){
                public  String localValue(){
                        return "良";
                }
        },
        C("79-70"){
                public  String localValue(){
                        return "中";
                }
        },
        D("69-60"){
                public  String localValue(){
                        return "一般";
                }
        },
        E("59-0"){
                public  String localValue(){
                        return "差";
                }
        };
        private String value;
        private Grade1(String value){
                this.value=value;
        }
        public String getValue()
        {
                return value;
        }
        public abstract String localValue();
}

学习了枚举后有一些小的疑问,public abstract String localValue();语句中用了abstract修饰,那么enum Grade1不使用abstract吗?
String str="C";Grade g=Grade.valueOf(str);System.out.println(g);是把某一个字符串转换为枚举,那么这个字符串为什么不是任意的呢?
比如将String str="C";改成String str="F";就会出错呢?

2 个回复

倒序浏览
学习了枚举后有一些小的疑问,public abstract String localValue();语句中用了abstract修饰,那么enum Grade1不使用abstract吗?
首先枚举中的每个元素都有public  String localValue(){...}语句,这就已经应用了这个方法,因为 localValue()方法是抽象的,所以只能通过覆盖方法才能使用。
String str="C";Grade g=Grade.valueOf(str);System.out.println(g);是把某一个字符串转换为枚举,那么这个字符串为什么不是任意的呢?
比如将String str="C";改成String str="F";就会出错呢?
枚举中的valueOf(String name)方法返回带指定名称的指定枚举类型的枚举常量,就是根据指定的字符串名字获取相应的枚举元素,你的程序里面没有F这个元素,那怎么能不报错呢,只能传枚举里面有的元素的名字

回复 使用道具 举报
谢谢,问题已解决!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马