Метод статического импорта с перегрузкой

#java #android #import #static #overloading

#java #Android #импорт #статический #перегрузка

Вопрос:

У меня есть мои DateUtils.java-файл, который имеет служебные методы, связанные с датой. У меня есть перегруженный метод setDate() , как показано ниже :

 // Overloaded method #1
public static void setDate(Date date) { }

// Overloaded method #2
public static void setDate(long timestamp) { }
  

Я использую только один из приведенных выше методов в других моих файлах классов. Например, setDate(Date date) метод.
Когда я попытался статически импортировать этот метод, он импортировал как :

 import static com.example.app.DateUtils.setDate;
  

Этот оператор импортирует оба перегруженных метода в мою реализацию, где, поскольку я использую только один перегруженный метод, а не оба.

Есть ли какой-либо способ выборочного статического импорта перегруженного метода? Я имею в виду, могу ли я статически импортировать только тот метод, который меня интересует?

Ответ №1:

Есть ли какой-либо способ выборочного статического импорта перегруженного метода? Я имею в виду, могу ли я статически импортировать только тот метод, который меня интересует?

Нет, вы не можете. Помните, что статический импорт (импорт в целом) — это просто механизм для определения сокращенной версии ссылки на вещи. Все, что import java.util.Map; это позволяет вам использовать Map where в противном случае вам пришлось бы вводить java.util.Map . То же самое для статического импорта, это просто средство получения сокращенного имени для (в вашем случае) com.example.all.DateUtils.setDate .

Если бы вы могли импортировать только одну перегрузку, а не другую, все, что было бы сделано, это сделать так, чтобы это не соответствовало действительной подписи:

 setDate(1234L);
  

… что не так уж и полезно.

Если вы хотите long отделить использование перегрузки от использования Date перегрузки, вам придется разделить их на отдельные, не перегруженные методы.