有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用Java扩展日历

我想从java向日历添加更多方法。util。日历,但我在使用getInstance方法时遇到问题

如果我有这样一个对象:
public class DateObject extends Calendar{ // other methods here }

而我是DateObject mon = DateObject.getInstance(); 代码不起作用。即使我用日历代替它。getInstance(),我无法将日历转换为我的DateObject

如何使DateObject使用getInstance()


共 (4) 个答案

  1. # 1 楼答案

    getInstance()是一个静态/类方法。你不能。你的用例是什么

  2. # 2 楼答案

    getInstance()Calendar上的静态方法。不能重写静态方法。您需要提供自己的方法

    但我会质疑延长日历的设计。几乎可以肯定的是,让你的班级包装一个日历,而不是扩展它,会更好地为你服务。特别是,更改日历实现将变得非常非常困难

    还考虑到,日历API在很多方面都被破坏了,所以它永远是对小猫的犯罪。

    您是否考虑过一个替代的日期/时间/日历库,它可能已经包含了您想要的功能?例如JodaTime

  3. # 3 楼答案

    创建Calendar的子类并不意味着Calendar中现有的静态getInstance()方法将神奇地知道

    一种解决方案是添加一个或多个带有签名的方法,如:

    public static DateObject getInstance(...);
    

    创建DateObject类,并根据需要实现它以创建DateObject实例

    另一种可能是查看现有的getInstance()工厂方法是如何工作的,并找出如何让它创建一个DateObject实例

    另外,注意那些暗示延长日历是个坏主意的答案

  4. # 4 楼答案

    或者,更好的办法是找到一个像Joda这样的库,它可以执行您认为必要的任何附加操作。一个扩展日历的设计几乎肯定是朝着一个错误的方向发展