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