用Java扩展日历
我想从java向日历添加更多方法。util。日历,但我在使用getInstance方法时遇到问题
如果我有这样一个对象:
public class DateObject extends Calendar{ // other methods here }
而我是DateObject mon = DateObject.getInstance();
代码不起作用。即使我用日历代替它。getInstance(),我无法将日历转换为我的DateObject
如何使DateObject使用getInstance()
# 1 楼答案
getInstance()是一个静态/类方法。你不能。你的用例是什么
# 2 楼答案
getInstance()
是Calendar
上的静态方法。不能重写静态方法。您需要提供自己的方法但我会质疑延长日历的设计。几乎可以肯定的是,让你的班级包装一个日历,而不是扩展它,会更好地为你服务。特别是,更改日历实现将变得非常非常困难
还考虑到,日历API在很多方面都被破坏了,所以它永远是对小猫的犯罪。
您是否考虑过一个替代的日期/时间/日历库,它可能已经包含了您想要的功能?例如JodaTime
# 3 楼答案
创建Calendar的子类并不意味着Calendar中现有的静态
getInstance()
方法将神奇地知道一种解决方案是添加一个或多个带有签名的方法,如:
创建DateObject类,并根据需要实现它以创建DateObject实例
另一种可能是查看现有的
getInstance()
工厂方法是如何工作的,并找出如何让它创建一个DateObject实例另外,注意那些暗示延长日历是个坏主意的答案
# 4 楼答案
或者,更好的办法是找到一个像Joda这样的库,它可以执行您认为必要的任何附加操作。一个扩展日历的设计几乎肯定是朝着一个错误的方向发展