在枚举中重载了toString()方法。
为什么在重载了之后就不能直接输出了
重载之前
public enum SeasonC 
{
Spring("a"),
Summer("b"),
Autumn("c"),
Winter("d");

输出这样可以,
SeasonC[] sc=SeasonC.values();
for(int i=0;i!=sc.length;++i)
    out.print(sc[i]);
但加了toString()重载之后(我把Winter注释掉)
public String toString()
{
switch(this)
{
case Spring:return "春天";
case Summer:return "夏天";
case Autumn:return "秋天";
//       case Winter:return "冬天";
}
return null;
}
我把Winter注释掉,编译器就会报出数组越界的错误.这是为什么?

解决方案 »

  1.   

    在你的程序中看到了for(int i=0;i!=sc.length;++i)这句,改成下面的试试:for(int i=0;i<sc.length;++i)
      

  2.   

    代码:
    package test;enum SeasonCs
    {
    Spring,
    Summer,
    Autumn,
    Winter;public String toString()
    {
    switch(this)
    {
    case Spring:return "春天";
    case Summer:return "夏天";
    case Autumn:return "秋天";
    //case Winter:return "冬天";
    }
    return null;
    }};public class SeasonC
    {
        public static void main(String[] args)
        {
            SeasonCs[] s = SeasonCs.values();
            
            for(int i = 0;i!=s.length;++i)
            {
                System.out.println(s[i]);
            }
        }
    }-----------------------------
    输出结果:
    春天
    夏天
    秋天
    null
      

  3.   

    “重载”与“重写”,这是我们翻译的问题,还有的书上有“过载”。是overriding还是overloading呢。