静态导入重载方法
Static import overloaded method
我有我的 DateUtils.java 文件,其中包含与日期相关的实用程序方法。我有重载方法 setDate()
如下所示:
// Overloaded method #1
public static void setDate(Date date) { }
// Overloaded method #2
public static void setDate(long timestamp) { }
我在我的其他 class 文件中只使用了上述方法之一。例如,setDate(Date date)
方法。
当我尝试静态导入此方法时,它导入如下:
import static com.example.app.DateUtils.setDate;
此语句在我的实现中导入了两个重载方法,因为我只使用一个重载方法,而不是两个。
有什么方法可以选择性地static import重载方法吗?我的意思是,我可以只静态导入我感兴趣的方法吗?
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?
不,你不能。请记住,静态导入(通常是导入)只是一种用于定义引用事物的 shorthand 版本的机制。 import java.util.Map;
所做的就是让您使用 Map
,否则您将不得不输入 java.util.Map
。静态导入也是如此,它纯粹是为(在您的情况下)com.example.all.DateUtils.setDate
.
获取 shorthand 名称的一种方法
如果您可以只导入一个重载而不导入另一个,它所做的就是使它与有效签名不匹配:
setDate(1234L);
...这不是那么有用。
如果您想使用 long
重载与使用 Date
重载分开,您必须将它们拆分为单独的非重载方法。
我有我的 DateUtils.java 文件,其中包含与日期相关的实用程序方法。我有重载方法 setDate()
如下所示:
// Overloaded method #1
public static void setDate(Date date) { }
// Overloaded method #2
public static void setDate(long timestamp) { }
我在我的其他 class 文件中只使用了上述方法之一。例如,setDate(Date date)
方法。
当我尝试静态导入此方法时,它导入如下:
import static com.example.app.DateUtils.setDate;
此语句在我的实现中导入了两个重载方法,因为我只使用一个重载方法,而不是两个。
有什么方法可以选择性地static import重载方法吗?我的意思是,我可以只静态导入我感兴趣的方法吗?
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?
不,你不能。请记住,静态导入(通常是导入)只是一种用于定义引用事物的 shorthand 版本的机制。 import java.util.Map;
所做的就是让您使用 Map
,否则您将不得不输入 java.util.Map
。静态导入也是如此,它纯粹是为(在您的情况下)com.example.all.DateUtils.setDate
.
如果您可以只导入一个重载而不导入另一个,它所做的就是使它与有效签名不匹配:
setDate(1234L);
...这不是那么有用。
如果您想使用 long
重载与使用 Date
重载分开,您必须将它们拆分为单独的非重载方法。