Должны ли вы полностью определять префикс пакета при использовании ThreeTen-Backport вместо java.time?

Мы используем Three Ten Backport в нашем проекте, так как один из наших клиентов использует Java 7. Three Ten Backport предоставляет нам новую функциональность даты и времени (java.time.*), Представленную в Java 8.

Я хотел бы знать, является ли следующее хорошей практикой. Поскольку большинство наших клиентов используют 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 Three, то нам придется изменить каждый экземпляр этого кода, вместо того, чтобы просто удалять операторы import. Рад слышать ваши мысли.

1 ответ

Решение

Столкновение будет только тогда, когда у вас есть оба импорта:

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

Имея только import org.threeten.bp.LocalDateTime; не должно вызывать проблемы. Таким образом, вам не нужно полностью квалифицировать любое утверждение с LocalDateTime datetime = ...

Другие вопросы по тегам