У меня есть файл 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;
Этот оператор импортирует оба перегруженных метода в моей реализации, поскольку я использую только один перегруженный метод, а не оба.
Есть ли способ выборочно перегружать метод статический импорт? Я имею в виду, могу ли я статически импортировать только интересующий меня метод?
Is there any way to static import overloaded method selectively? I mean, can I statically import only the method for which I am interested in?
Нет, ты не можешь. Помните, что статический импорт (импорт вообще) — это просто механизм для определения сокращенной версии обращения к вещам. Все, что делает import java.util.Map;
, — это позволяет вам использовать Map
там, где в противном случае вам пришлось бы набирать java.util.Map
. То же самое и для статического импорта, это просто средство получения сокращенного имени (в вашем случае) com.example.all.DateUtils.setDate
.
Если вы мог импортируете только одну перегрузку, а не другую, все, что она сделает, это сделает это не соответствующим действительной подписи:
setDate(1234L);
... что не так уж и полезно.
Если вы хотите использовать перегрузку long
отдельно от перегрузки Date
, вам придется разделить их на отдельные, не перегружаемые методы.