Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java扩展日历_Java_Calendar - Fatal编程技术网

用Java扩展日历

用Java扩展日历,java,calendar,Java,Calendar,我想从java.util.Calendar向日历中添加更多方法,但在使用getInstance方法时遇到了问题 如果我有这样一个对象: 公共类DateObject扩展了日历{//此处的其他方法} 我做的是DateObject mon=DateObject.getInstance() 代码不起作用。即使我用Calendar.getInstance()替换它,我也无法将日历转换为DateObject 如何使我的DateObject使用getInstance()?getInstance()是一种静态/

我想从java.util.Calendar向日历中添加更多方法,但在使用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已经是一个类了。