我最近继承的应用程序关于构造函数的弃用警告已满:

Date d = new Date(int year, int month, int day)

有谁知道或可以指出为什么将类似以下内容的简单内容替换为以下内容的原因:

Date d = null;

Calendar cal = GregorianCalendar.getInstance();

cal.set(1900 + year, month, day);

d = cal.getTime();

现在,显然不赞成使用警告本身并不是问题,但是您是否可以想象,如果删除此构造函数,数以百万计的LOC会痛苦地哭泣吗?

在我对基准测试的简短介绍中,执行基准测试大约需要50%的时间。

第一线不就是浪费时间吗?您会从cal到Calendar.getTime()获得一个Date,那么为什么要使用新的Date()调用创建一个日期,然后将其丢弃?特别是如果您正在对此进行基准测试...

// @放松:好抓。为什么不做一个帖子呢。

也许是因为美国人期望使用Date(整数年,整数天,整数月);-)

@unwind:当然,在这种情况下,这可能没有意义,但是您并不总是想要当前时间的日期,生日,到期日等。

@Scott:即使如此,您也可以通过cal.set(..)进行设置。我相信,当您打算使用日历时,不应像执行操作那样实例化日期。

@Adeel我明白您的意思,但是当现有系统需要一个java.util.Date时,您要提供一个java.util.Date。也许随着时间的流逝,对系统有了更深入的了解,就可以重构出旧的API了。

" LOC"是什么意思?

@NicolasBarbulesco LOC ==代码行

作为记录,请检查Java 8 new Date api! oracle.com/technetwork/articles/java/

最初,Date旨在包含有关日期的所有逻辑,但是API设计人员最终意识到,到目前为止,他们所拥有的API严重不足,无法完全扩展以正确处理诸如时区,语言环境,不同日历,夏令时等

因此,他们创建了Calendar来处理所有这些复杂性,并将Date降级为一个简单的时间戳,弃用了其所有与格式,解析和单个日期字段有关的功能。

顺便说一句,在内部,这些方法(例如Date(int, int, int)构造函数)现在调用Calendar,因此,如果看到速度上的差异,则在调用Calendar时您做错了什么。

最重要的是:不是Java的Calendar API过于复杂,而是人为的日期概念,而Calendar的唯一问题是,它没有提供大多数常用用法的快捷方式。

java.util.Date重新使用公历的静态实例。 至少可以说这很有趣。 但是与为每个循环创建一个新的日历相比,它的性能更好。

Java Date API很久以来就受到批评,例如参见此线程。

您可能想查看Joda-Time或Apache Commons Lang,以了解其他的Date / Time实用程序。

我实际上回想起前一段时间在Parleys上观看Joda上的演讲时,印象深刻。 parleys.com/display/PARLEYS/。 至于追溯到1000s或LOC的100s,我不太

好点子。 Joda-Time后来被用作开发Java.time(现代Java日期和时间API)的基础。 它是Java 8的内置功能,也已移植到Java 6和7。这是我建议大家现在都使用的功能。

答案是可移植性。

类Date不太灵活。您可以定义日期,但不能进行任何转换为??其他日历格式。因此,Sun决定使用附加的类层次结构(Calendar)使它更加灵活。

但是,它不是很方便。

主要是因为原始的java.util.Date ated肿并且不完全了解时区并且不友好国际化。

但是,在值对象中,或者说作为数据类型,日期仍在使用中,并且使用得很好。只要使它明确不可变,就可以轻松进行。我倾向于认为它必须是不变的,出于其他目的,我们可以操纵日历。在需要进行大量操作的地方,应该考虑使用Joda-Time之类的东西。

[编辑]

只是不要在后面的代码中实例化Date。它没有用。您可能会为基准测试取得更好的结果。

从技术上讲,迈克尔·伯格沃德(Michael Borgwardt)的回答是最好的。

但是,为什么他将人类的太阳系布局方式归咎于人类呢?

好的,我们想到了秒,分,小时的想法。

但这不是我们的错,认为地球的日子是近似的(取决于我们所说的是真正的太阳日,平均太阳日还是恒星日,每一个周期都是周期性且随机变化的)。地球绕太阳公转的时间大约是365天不是我们的错,月亮绕地球公转的大约27.3天不是我们的错(取决于我们是否在谈论恒星,定理的天体,热带,异乎寻常或龙血(结节)月)。

您为日历没有考虑所有这些细节感到高兴吗?那么我们的软件错误可能确实取决于月球的相位。

上尉队长再次罢工! 无需复制,只需指出。 en.wikipedia.org/wiki/Gregorian_calendar

当然,没有人使用任何其他日历格式,但是新的API增加了为99%的普通情况编写的代码量,因此对于LoC付钱的Java程序员来说,这是一个很大的福音。

高可用性,可以肯定的是,在当今时代,LoC是否可以用作衡量生产率的指标?

有人希望这样做,但也许Sun的老兄一直在生产类似这样的API,但事情没有变……

java 日期 年数_关于java:为什么不赞成使用“新日期(整数年,整数月,整数日)”?...相关推荐

  1. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  2. java二次排序_使用java 实现二次排序

    二次排序工具类: import java.io.Serializable; import scala.math.Ordered; /** * @author 作者 E-mail: * @version ...

  3. 最大质因数 最大回文数乘积 字符串String类用法_Java每日练习题及题解(11月16日)

    <Java每日练习题及题解>系列目录 1.有限条件求和_Java每日练习题及题解(11月15日) 2.最大质因数 最大回文数乘积 字符串String类用法_Java每日练习题及题解(11月 ...

  4. 日期转换 例如 二零零六年十二月二十一日 转换成 2006年12月21日

    日期转换  例如 二零零六年十二月二十一日 转换成 2006年12月21日 class Program{static void Main(string[] args){//编写一个函数进行日期转换,将 ...

  5. java中日期比较方法_在java中进行日期时间比较的4种方法

    1. Date.compareTo() java.util.Date 提供了在 Java 中比较两个日期的经典方法compareTo(). 如果两个日期相等,则返回值为0. 如果Date在date参数 ...

  6. java 如何判断余数_用java判断一个数是不是回文数!

    哈喽大家好,这里是Java小白成长记! 昨天分享了怎么来判断一个数字的奇偶性,其中用到了if选择语句和求余运算,虽然都不是很难的知识点,但是也不可能分享一次就不管了,所以今天继续分享一个和它俩有关的代 ...

  7. java是什么格式_是java格式

    错误:编码GBK的不可映射字符的解决办法 最近在重新补javaSE的基础,编辑器编写完代码以后,在控制台运行代码段的时候,出现了以下的错误提示:错误:编码GBK的不可映射字符 在通过查询谷哥和度娘以后 ...

  8. swift golang java,解决两数之和 (Javascript, Java, C#, Swift, Kotlin, Python,C++, Golang)

    解决两数之和(Javascript, Java, C#, Swift, Kotlin, Python,C++, Golang) 给定一个整数数组,返回两个数字的索引,以便它们加起来成为一个特定的目标. ...

  9. java管理系统中期报告_基于Java的图书馆管理系统的设计-中期报告

    基于Java的图书馆管理系统的设计-中期报告 毕业设计(论文)中期报告 毕业设计(论文)题目:基于Java的图书馆管理系统的设计 专业:计算机 学生信息: 指导教师信息: 报告提交日期:2012年5月 ...

最新文章

  1. Lync 小技巧-24-PDF 加密文件-转-Word-操作手册
  2. 当阿里不想赚钱了,生意该怎么做?
  3. 输入序列连续的序列检测
  4. linux truncate文件,linux系统编程:用truncate调整文件大小
  5. libgdx和Kotlin –类[2D平台原型]
  6. 操作系统【五】分段内存管理+段页式内存管理
  7. HOJ 13828 Funfair
  8. matlab实现整数规划/01规划
  9. 第1-2讲 初识SLAM
  10. 多目标跟踪MOT评价指标
  11. RocketMQ源码-基于Netty的通信层设计
  12. c#二叉树 取叶子节点个数_「leetcode」222.完全二叉树的节点个数
  13. 中级软件设计师笔记全套 看完你就过啦
  14. 输入年月日获取农历日期
  15. SQL的between....and 用法
  16. Vue3.x-bate + Antd2.x 项目搭建报错
  17. 一个简单的考勤签到程序
  18. 学习笔记——spring5概念和原理
  19. Android中的消息推送
  20. bzoj4399 魔法少女LJJ

热门文章

  1. java自行车起源_自行车的起源
  2. 实战:基于OpenCV进行长时间曝光
  3. 在吗?我要讲件大事了,你绝对不知道CSDN公众号还有这个功能!错过后悔!
  4. 随机数大家都会用,但是你知道生成随机数的算法吗?
  5. 友盟+发布小程序统计分析工具U-MiniProgram
  6. “Talk is cheap, show me the code”你一行代码有多贵?
  7. 2020 年了,不知道这些还怎么做区块链工程师?
  8. 阿里云加码 2000 亿,再“出征”新基建!
  9. 远程办公的破冰行动!
  10. 天猫回应“双11数据造假”:已启动司法流程;小米折叠手机专利曝光;ASP.NET感染勒索软件|极客头条...