【问题标题】:My toString() method isn't overriding the Calendar toString() method我的 toString() 方法没有覆盖日历 toString() 方法
【发布时间】:2011-11-08 13:21:11
【问题描述】:

这是我的代码,真的很简单。这不是家庭作业,我正在通过一本教育书籍自学 Java:


import java.util.*;

/** @author Chris */

public class Exercise9_9 extends GregorianCalendar
{   
    public static void main(String[] args)
    {
        String[] stringList = {"s", "c", "b", "f", "e", "q", "g", "w", "i", "o"};
        Integer[] integerList = {5, 7, 8, 9, 6, 5, 4, 1, 2, 3};
        Calendar[] calendarList = new Calendar[10];

        for (int a = 0; a < calendarList.length; a++)
        {
            calendarList[a] = new GregorianCalendar();
            calendarList[a].set(Calendar.YEAR, ((int)Math.random()* 1000));
        }

        System.out.println("Largest String: " + max(stringList));
        System.out.println("Largest int: " + max(integerList));
        **System.out.println("Largeset date: " + (max(calendarList)).toString());**
    }

    public static Object max(Object[] a)
    {
        Arrays.sort(a);
        return a[a.length-1];
    }

    **@Override
    public String toString()**
    {
        return "Test";
    }  
}

问题是产生三个数组:int、String和Calendar类型。然后从每个类别中选出最大的(并显示答案)。

这个类扩展了GregorianCalendar 类,这意味着我可以访问我试图覆盖的日历toString()。但是它不起作用。就像toString() 方法没有覆盖一样,因为我得到了默认的toString() 输出。但是,我使用的是 Netbeans,当我单击覆盖链接时,它会确认覆盖,甚至将我带到 Calendar.toString()。所以我被卡住了,任何帮助将不胜感激。

【问题讨论】:

    标签: java overriding tostring overloading


    【解决方案1】:

    这是因为你没有使用你的类,而是GregorianCalendar:
    calendarList[a] = new GregorianCalendar();

    将此更改为
    calendarList[a] = new Exercise9_9 ();

    【讨论】:

    • 哇,我的第一个问题得到了如此迅速的回应。非常感谢。
    猜你喜欢
    • 2018-01-10
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 2015-08-28
    • 2011-11-30
    • 2019-08-20
    • 2012-01-11
    • 1970-01-01
    相关资源
    最近更新 更多