【问题标题】:Java Duration-like class for length?Java Duration 类的长度?
【发布时间】:2015-01-08 01:42:42
【问题描述】:

在 Java 中,有用于时间跨度的 DurationPeriod 类。

长度/距离是否有等价的类?

【问题讨论】:

  • 不在标准库中。此外,我们不知道您使用的是英制、公制还是圣经距离(仅举几例)。
  • “时间”是编程中的一个重要概念。程序必须每 n 毫秒或其他时间轮询一次网络,缓存的数据有过期时间,在等待用户响应时可能需要超时,等等。长度/距离没有同样的重要性,所以没有理由为此使用内置类型。也许在某个地方有一个用于科学单位的包,它还定义了质量、力、阻力等类。但对于典型的 Java 用户来说,不需要这样的东西。
  • @Makoto 是的,前几天我只是在找一个“cubit”课程...
  • 先生。 Polywhirl - 不,我不是指一个方法,而是一个类似于 java.time.Duration 的类。 (docs.oracle.com/javase/8/docs/api/java/time/Duration.html)
  • ajb - 是的,时间是编程中的一个重要概念。此外,长度是现实世界中的一个重要概念,并且创建了许多程序来模拟现实世界的某些方面。

标签: java duration


【解决方案1】:

有几个:intshortlongfloatdoublejava.util.BigInteger...所有这些都适用于测量距离。在许多情况下,这些也足以测量时间。存在用于测量持续时间的特殊类的唯一原因是 code that deals with time is often infuriatingly hard to get 100% right

【讨论】:

  • 使用特殊的测量类来帮助确保你得到正确的单位可能是有意义的(即确保你不要试图乘以距离 * 时间并将结果添加到加速度),并帮助转换。如果有人开发了这样的软件包,我不会感到惊讶。
  • Approaching Darkness Fi - 我正在开发一个程序,其中一些用户长度数据以英尺为单位输入,一些以英里为单位,一些以海里为单位,一些以公里为单位,等等。这会很好如果有一个类自动进行转换,类似于 Duration.ofHours()、Duration.ofMinutes() 等。只要涉及物理单位,就很难 100% 正确。 (由于单元中的软件错误,一艘航天器在火星上坠毁:en.wikipedia.org/wiki/Mars_Climate_Orbiter
  • ajb - 有一个关于在 Java 中处理单元的通用解决方案的建议。 (jcp.org/en/jsr/detail?id=363) 我正在寻找一个更有限的解决方案,其设计类似于 java.time.Duration。
  • @Tad 是的,我很熟悉这个错误。我不知道任何支持“单位”功能的编程语言,并且我不知道任何提供单位转换的标准库,除了时间。你想防止这样的错误很好,但你必须找到自己的系统来做到这一点。通常这些单位要么包含在变量名中(例如int lengthInMeters;),要么记录在 cmets 中(/**length, measured in meters*/ int lenght;
  • @ApproachingDarknessFish Ada 尝试过,有点。它可以让你定义自己的不能自动转换的数字类型,这样做的目的之一是让你不能说像x : distance; y : mass; ... y := x; 这样的东西。编译器会捕捉到这一点。然而,让这个功能真正适用于单位被证明是非常困难的。我认为需要更多的内置语言支持,并且这个话题经常出现在 Ada 世界中。
猜你喜欢
  • 2010-12-30
  • 2010-11-05
  • 2017-09-20
  • 2014-06-14
  • 2016-11-08
  • 2018-11-13
  • 2018-09-16
  • 2012-01-25
  • 1970-01-01
相关资源
最近更新 更多