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

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

1 Ответ

0 голосов
/ 01 декабря 2018

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

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

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

...