【问题标题】:Static import overloaded method静态导入重载方法
【发布时间】:2019-08-31 23:30:37
【问题描述】:

我有我的 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;

此语句在我的实现中导入两个重载方法,因为我只使用一个重载方法,而不是两个。

有没有办法选择性地静态导入重载方法?我的意思是,我可以只静态导入我感兴趣的方法吗?

【问题讨论】:

    标签: java android import static overloading


    【解决方案1】:

    有没有办法选择性地静态导入重载方法?我的意思是,我可以只静态导入我感兴趣的方法吗?

    不,你不能。请记住,静态导入(一般的导入)只是一种定义引用事物的速记版本的机制。 import java.util.Map; 所做的只是让你使用Map,否则你必须输入java.util.Map。静态导入也是如此,它纯粹是获取(在您的情况下)com.example.all.DateUtils.setDate 的简写名称的一种方式。

    如果你可以只导入一个重载而不是另一个,它所能做的就是使它与一个有效的签名不匹配:

    setDate(1234L);
    

    ...这并不是那么有用。

    如果您想将 long 重载与 Date 重载分开使用,则必须将它们拆分为单独的非重载方法。

    【讨论】:

      最近更新 更多