【发布时间】:2019-03-17 20:57:51
【问题描述】:
是否可以通过另一个类重写另一个类中的 toString() 方法,这样您就不必重写整个类就可以重写一个方法?比如我想用这段代码重写Calendar类中的toString()方法:
public String toString() {
Date date = getTime();
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
return dateFormat.format(date);
}
这样它会返回类似的东西,
17/03/2019
而不是像几乎不可读的字符串,
java.util.GregorianCalendar[time=1552855726815,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="America/New_York",offset=-18000000,dstSavings=3600000,useDaylight=true,transitions=235,lastRule=java.util.SimpleTimeZone[id=America/New_York,offset=-18000000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=2,startDay=8,startDayOfWeek=1,startTime=7200000,startTimeMode=0,endMode=3,endMonth=10,endDay=1,endDayOfWeek=1,endTime=7200000,endTimeMode=0]],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=2,WEEK_OF_YEAR=12,WEEK_OF_MONTH=4,DAY_OF_MONTH=17,DAY_OF_YEAR=76,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=4,HOUR_OF_DAY=16,MINUTE=48,SECOND=46,MILLISECOND=815,ZONE_OFFSET=-18000000,DST_OFFSET=3600000]
如果没有,我能否就如何编写一个方法来完成类似的事情提出一些建议?
【问题讨论】:
-
您不必为了重写一个方法而重写整个类。但是为什么你需要覆盖
toString()?为什么不采用一种新方法来满足您的需求? Java 中toString()方法的目的是提供一种以文本方式表示对象的方法。如果你覆盖它,你将消除它的预期目的。 -
只需扩展所需的类即可。但是这样做只是为了覆盖像
toString()这样的辅助方法可能没有必要。我怀疑有更好的方法来完成你想要做的事情。为什么不直接写一个把字符串转换成你想要的格式的方法呢? -
在 toString() 方法中添加一个 Calendar 参数,并在此 Calendar 上调用 getTime。 docs.oracle.com/javase/tutorial/java/javaOO/arguments.html。另外,请停止使用日历和日期。它们已经过时了。使用 java.time 包中的类。
-
看起来像XY problem。什么是上下文以及您真正想要完成什么?
-
另一个问题,bob larry,你已经问了 6 个关于 Stack Overflow 的问题,谢谢你,并收到了其中 5 个的答案。是时候学会接受答案了吗?请阅读What should I do when someone answers my question?(并获得徽章)。
标签: java string oop calendar tostring