java - 使用 ThreeTen-Backport 与 java.time 时是否应该完全限定包前缀?

标签 java java-8 threetenbp

我们在项目中使用了“三十反向移植”,因为我们的一位客户正在使用 Java 7。“三十反向移植”为我们提供了 Java 8 中引入的新日期时间功能 (java.time.*)。

我想知道以下是否是一个好的做法。由于我们的大多数客户都使用 Java 8,并且有一天我们可能会将所有客户升级到 Java 8,因此使用 org. Threeten.bp 完全限定类名真的有意义吗?最终,我们可能会将所有客户升级到 Java 8 并删除这种依赖关系,如果我们最终这样做,那么如果我们只使用不带包前缀的类名,那么代码更改将会更少。举个代码示例,我的意思是这样的。

import org.threeten.bp.LocalDate Time;

public class Example {

     public void example() {
          LocalDateTime datetime = // ....
     } 
}

您可以在示例中看到我引用的 LocalDateTime 没有包前缀。在Java 8中,将加载java.time.LocalDateTime类,还是org. Threeten.bp.LocalDateTime?有点不清楚,因为在 Java 8 的这段代码中,有两个 float 的 LocalDateTime,一个来自 java.time,另一个来自 org. Threeten.bp。我假设 native Java 库将被优先并加载,但我可能是错的。

这样做是好的做法吗?或者它会生成编译器警告/错误吗?即使它不会生成任何警告或错误,这仍然是一个不好的做法吗?我很想这样做,因为通过包完全限定一个类实在是丑陋,如果我们最终删除了“三个十”依赖项,那么我们将不得不更改该代码的每个实例,而不仅仅是删除 import 语句。很高兴听到您的想法。

最佳答案

只有当您同时导入时才会发生冲突:

import org.threeten.bp.LocalDateTime;
import java.time.LocalDateTime;

仅具有 import org. Threeten.bp.LocalDateTime; 不应导致问题。因此,您不需要使用 LocalDateTime datetime = ...

完全限定任何语句

关于java - 使用 ThreeTen-Backport 与 java.time 时是否应该完全限定包前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53565627/

相关文章:

java - 没有原始属性的复合主键

java - 尝试将数组列表与方法和构造函数一起使用。这个可以优化吗?

java - Netbeans 和 Bad 服务配置文件,或构造 Processor 对象时抛出的异常

java - 从 JBoss 中的 servlet 访问 Spring bean

threetenbp - 将 LocalDate 和 LocalTime 转换为 java.util.date 的最佳方法是什么?

java - 如何使用 ThreeTenABP 将 ZonedDateTime/OffsetDateTime 转换为日期?

java - 为什么使用不同的 ArrayList 构造函数会导致内部数组的增长率不同?

java - StackTraceElement getFileName() 在 lambda 上给出 null

hibernate - 如何使用 Spring Data 的可选 <Object> 返回

java - 使用 LocalDate 类计算指定天数的日期差异