我经常遇到关于Java Date
和其他与日期时间相关的类的负面反馈。作为.NET开发人员,我无法完全理解(不使用它们)它们到底有什么问题。
有人能对此有所启示吗?
啊,Java Date
类。最好的例子之一,是如何不以任何语言在任何地方做某事。我从哪里开始?
阅读JavaDoc可能会使人们认为开发人员实际上有了一些好主意。它接着约之间的区别UTC和GMT在长度,尽管两者之间的差别基本上是闰秒(这发生非常 罕见)。
但是,设计决定实际上是在浪费任何被认为是设计良好的API的想法。以下是一些最喜欢的错误:
null
。结果,我们有0..11(今天是109年的第11个月)。为了转换为字符串,在月份中有类似数量的++和-。Calendar
,旨在“修复”这一点,实际上使同样的错误。他们仍然是可变的。Date
代表DateTime
,但是为了顺应SQL领域的需求,还有另一个子类java.sql.Date
,代表了一天(尽管没有与之关联的时区)。TimeZone
与关联的Date
,因此范围(例如“全天”)通常表示为午夜至午夜(通常在任意时区)最后,值得注意的是,leap秒通常会根据一个小时后用ntp更新的良好系统时钟进行自我校正(请参见下面的链接)。在引入两个leap跃秒(最少每六个月,实际上每隔几年)的情况下,系统仍无法正常运行的机会,尤其是考虑到必须不时重新部署新版本的代码这一事实。即使使用重新生成类的动态语言或类似WAR引擎的东西,也会污染类空间并最终耗尽permgen。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句