为什么时间不以正常(可读)方式显示?缺少方法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菜鸟。
答案 0 :(得分:3)
您可以使用以下代码显示当前时间:
DateFormat timeFormat = DateFormat.getTimeInstance();
Calendar currentDate = Calendar.getInstance();
System.out.println(timeFormat.format(currentDate.getTime()));
答案 1 :(得分:2)
不确定你在这里做了什么。
看起来你已经编写了自己的抽象类Calendar,并在Calendar1中继承了它。
您编写的第一个Calendar类继承自对象,其toString将不会有趣/有用。
日历上toString的文档位于: http://download.oracle.com/javase/1.4.2/docs/api/java/util/Calendar.html#toString()
底线 - 不要依赖它。
答案 2 :(得分:0)
为什么你在基类中使用super?我不确定你要做什么但是在基类Calendar中你只需要toString()方法。
在Calender1类中,您还需要创建一个toString()方法。在那里你会调用use super.toString()这是因为你继承日历所以它是你的超类
答案 3 :(得分:0)
您正在调用没有父类的super
(实际上您正在调用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()) + "]";
}
答案 4 :(得分:0)
你可能试过这个:
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
(YMMV)。
然而,这有点卷曲。通常,您可以使用其他几个答案中显示的DateFormat来将日历的显示与其实现分离。