体育资讯网

您现在的位置是:首页 > 分类14 > 正文

分类14

javaenum源码(Javaenum)

hacker2022-07-12 10:09:30分类1468
本文目录一览:1、求JAVA大神!JAVA报错从发行版5开始."enum"为关键字.....

本文目录一览:

求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){ } 以上只是个人理解,由于本人学术浅薄,有理解不到位处望大家指点.也希望以上的回答能够对提问者有点帮助

发表评论

评论列表

  • 美咩厌味(2022-07-12 18:41:06)回复取消回复

    String name 。本质上没什么区别。 再次,我们看下该两个方法的定义,name()定义的是final String类型的,而toString()定义的是普通String类型的

  • 世味笑惜(2022-07-12 18:08:52)回复取消回复

    olor){ switch(color){ case Red : System.out.println("红色"); break; case Bl