簡體   English   中英

Java中的toString方法

[英]toString method in Java

為什么時間顯示不正常(可讀)? 方法toString丟失了?

import java.util.Calendar;

abstract class Calender {

    abstract void showTime();

    void time() {
        Calendar rightNow = Calendar.getInstance();
        System.out.println("Time: " + rightNow);
    }

    public String toString() {
        return "Calender [toString()=" + super.toString() + "]";
    }

}

class Calender1 extends Calender {
    public static void main (String[] args) {
        Calender1 cal = new Calender1();
        cal.time();
    }

    void showTime() {       
    }
}

謝謝。 Java新秀。

您可以使用以下代碼顯示當前時間:

DateFormat timeFormat = DateFormat.getTimeInstance();
Calendar currentDate = Calendar.getInstance();
System.out.println(timeFormat.format(currentDate.getTime()));

不太確定您在這里實際上在做什么。

看起來您已經編寫了自己的抽象類Calendar,並在Calendar1中繼承了它。

您編寫的第一個Calendar類從對象的toString繼承而來,該對象的toString不會變得有趣/有用。

日歷上toString的文檔在這里: http : //download.oracle.com/javase/1.4.2/docs/api/java/util/Calendar.html#toString ()

底線-不要依賴它。

為什么在基類中使用super? 我不確定自己要做什么,但是在基類Calendar中,您只需要toString()方法。

並且在您的Calender1類中,您還需要創建一個toString()方法。 在這里您將調用use super.toString(),這是因為您是從日歷繼承而來的,因此它是您的超類

您正在調用沒有父類的super Object.toString()實際上是在調用Object.toString() ,這將返回該類的名稱和內存地址: http : //download.oracle.com/javase/6/docs/api /java/lang/Object.html#toString%28%29

您可能想要這樣的東西:

@Override
public String toString() {
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy.MM.dd hh:mm:ss");
    return "Calender [toString()=" + formatter.format(rightNow.getTime()) + "]";
}

您可能嘗試過:

Calendar cal = Calendar.getInstance();
System.out.println(cal);

給出如下輸出:

java.util.GregorianCalendar[time=1303645990437,areFieldsSet=true,areAllFieldsSet=true,...

這是GregorianCalendar的toString方法,它提供了其實現的所有細節狀態細節,而不是可讀的日期時間表示形式。

作為實驗,您可以創建一個匿名內部類,該內部類使用不同的toString實現擴展了GregorianCalendar:

Calendar cal = new GregorianCalendar() {        
    public String toString() {
        return getTime().toString();
    }
};
System.out.println(cal);

打印:

Sun Apr 24 13:53:10 CEST 2011

(因人而異)。

但是,這有點古怪。 通常,您將使用DateFormat(如其他幾個答案所示)來將Calendar的顯示與其實現分離。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM