[英]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.