提问人:ktm5124 提问时间:12/1/2018 最后编辑:Basil Bourquektm5124 更新时间:12/2/2018 访问量:188
使用 ThreeTen-Backport 和 java.time 时,是否应该完全限定包前缀?
Should you fully qualify the package prefix when using ThreeTen-Backport versus java.time?
问:
我们在项目中使用了 Three Ten Backport,因为我们的一个客户正在使用 Java 7。Three Ten Backport 为我们提供了 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 中,有两个 LocalDateTime 浮动,一个来自 java.time,另一个来自 org.threeten.bp。我假设本机 Java 库将被优先并加载,但我可能是错的。
这样做是好的做法吗?或者它会生成编译器警告/错误吗?即使它不会生成任何警告或错误,它仍然是一种不好的做法吗?我很想这样做,因为用包完全限定一个类是非常丑陋的,如果我们最终删除了 Three Ten 依赖项,那么我们将不得不更改该代码的每个实例,而不仅仅是删除 import 语句。很高兴听到你的想法。
答:
只有当您同时拥有两个导入时才会发生冲突:
import org.threeten.bp.LocalDateTime;
import java.time.LocalDateTime;
只有 不应该导致问题。因此,您不需要完全限定任何语句import org.threeten.bp.LocalDateTime;
LocalDateTime datetime = ...
评论
java.lang
评论
java.lang
java.time
java.lang
import