在枚举中重载了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注释掉,编译器就会报出数组越界的错误.这是为什么?
为什么在重载了之后就不能直接输出了
重载之前
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注释掉,编译器就会报出数组越界的错误.这是为什么?
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