#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
перегрузки, вам придется разделить их на отдельные, не перегруженные методы.