黑马程序员技术交流社区
标题:
关于枚举中的一些疑惑
[打印本页]
作者:
李志广
时间:
2012-8-11 10:28
标题:
关于枚举中的一些疑惑
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";就会出错呢?
作者:
王程
时间:
2012-8-11 12:03
学习了枚举后有一些小的疑问,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这个元素,那怎么能不报错呢,只能传枚举里面有的元素的名字
作者:
李志广
时间:
2012-8-11 12:21
谢谢,问题已解决!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2