class Month2
{
  private String name;
  private Month2(String nm)
    {
      name=nm;
    }
  public String tostring()
    {
      return name;
    }
   //静态常量
    public final static Month2 JAN=new Month2("January");
    public final static Month2 FEB=new Month2("Febuary");
    public final static Month2 MAR=new Month2("March");
    public final static Month2 APR=new Month2("April");
    public final static Month2 MAY=new Month2("May");
    public final static Month2 JUNE=new Month2("June");
    public final static Month2 JULY=new Month2("July");
    public final static Month2 AUG=new Month2("August");
    public final static Month2 SEP=new Month2("Sprtember");
    public final static Month2 OCT=new Month2("Octobor");
    public final static Month2 NOV=new Month2("November");
    public final static Month2 DEC=new Month2("December");
    public final static Month2 [] months={JAN,JAN,FEB,MAR,APR,MAY,JUNE,JULY,AUG,SEP,OCT,NOV,DEC};
  
}
 
 class Month_Cal
 {
   public static void main(String [] args)
    {
      System.out.println(Month2.months[5]);
    }
 }
编译通过,执行错误
加上TOSTRING()后正常,为何

解决方案 »

  1.   

    出什么错误?
    哪里加上TOSTRING()?
      

  2.   

    public String toString()//大小写不对?
        {
          return name;
        }
      

  3.   

    toString()其原型为:
    public String toString() {
       return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
    原型中看到的 类名 + @ + 十六进制数字表示的该对象的散列码覆盖以后运行自己的。
      

  4.   

    应该不会把,默认会调用 object 的 toString 方法
      

  5.   

    lz代码运行没有任何错误,因为没有覆盖toString()(是大写S),所以调用的是object的toString()方法,改为toString()后就没问题了
      

  6.   

    months[5]本来是个对象的
    所以要加上toString
      

  7.   

    应该没问题..
    你显示出来的应该是个类型!
    你自己做的那个tostring()方法才是显示其内容的!