javaenum源码(Javaenum)
本文目录一览:
求JAVA大神!JAVA报错从发行版5开始."enum"为关键字.....
enum 是java的枚举类型javaenum源码,javaenum源码你这样写就相当于javaenum源码:
Integer int = 0;
这肯定是不行的
java的enum问题,代码如下:
因为你的localValue方式是枚举里面特化的匿名类方法,就算其访问类型是public,但由于其在一个匿名类中(匿名类只有当前上下文才能访问其方法,也就是默认private访问),所以外部无法访问,需要公开方法的请在enum中使用abstract声明。
enum Grade
{
A
{
@override
public String localeValue()
{
return "";
}
}
public abstract String localeValue();
}
其它不变,如此类推。
求这样的一个Java程序,关于enum的
public class TestEnum {
public static void main(String[] args) {
TestEnum test = new TestEnum();
test.Test(MyColor.Red);
}
public void Test(MyColor color){
switch(color){
case Red :
System.out.println("红色");
break;
case Blue :
System.out.println("蓝色");
break;
default :
System.out.println("没有设置颜色");
break;
}
}
}
enum MyColor{
Red,Blue,Green,Gray;
}
Java枚举类型的问题
首先javaenum源码,我们看下枚举类javaenum源码的源码或java1.6 API文档就会发现这两个方法javaenum源码的定义分别为: public final String name() { return name; } public String toString() {return name; } 两个方法都是返回枚举类中的private final String name 。本质上没什么区别。 再次,我们看下该两个方法的定义,name()定义的是final String类型的,而toString()定义的是普通String类型的,这个就是你知道为什么toString()能重写,而name()不能重写。其实你问的还有没有其它的区别,区别也是在这里能重写与不能重写的区别,我们就写一个简单的例子来说明下: public class EnumTest{ public enum People{ Chinese("中国人"),American("美国人"); private String people ; private People(String people){ this.people = people ; } public String toString(){ return super.toString()+"("+people+")" ; } } public static void main(String[] args){ People people=People.Chinese; System.out.println("name-"+people.name()); System.out.println("toString-"+people.toString()); } } 打印出来的结果是: name-Chinese toString-Chinese(中国人) 区别也就显而易见了,调用name()方法永远只能得到定义的名称,而toString()方法可以重写,你可以得到你想要得到的自定义名称。其实我们还以把上面重写了toString()方法中的super.toString去掉,修改成: public String toString(){ return people ; } 那么得到的结果如下了: name-Chinese toString-中国人 其实private People(String people)该构造函数可以有多个参数,参数的个数是由自定义的名称的参数而决定的,例如我们可以定义成这样: Chinese("中国人",1),American("美国人",2); private People(String people,int num){ } 以上只是个人理解,由于本人学术浅薄,有理解不到位处望大家指点.也希望以上的回答能够对提问者有点帮助