我有以下枚举,其中包含许多构造函数:
public enum Route
{
HOMEPAGE("", null, UserType.GUEST);
Route(String baseName, String langFile, Entity entity) {}
Route(String langFile, Entity entity) {}
Route(String langFile, UserType... availability) {}
Route(String baseName, String langFile, UserType... availability) {}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我很明确地在定义时调用第4个构造函数HOMEPAGE.但问题是,我收到了错误:Cannot resolve constructor Route(java.lang.String, null, com.foo.UserType).
如果我从构造函数中删除varags,即它看起来像:
Route(String baseName, String langFile, UserType availability) {}
Run Code Online (Sandbox Code Playgroud)
或者,如果我在定义时更改null HOMEPAGE,即:
HOMEPAGE("", "", UserType.GUEST);
Run Code Online (Sandbox Code Playgroud)
然后它工作.但这对我来说没有意义.为什么不检测到我正在调用第4个构造函数?
hmj*_*mjd 10
问题是null可能是a String或a UserType.所以:
HOMEPAGE("", null, UserType.GUEST);
Run Code Online (Sandbox Code Playgroud)
将匹配第三或第四个构造函数.null将a 转换为a String将导致选择第四个构造函数:
HOMEPAGE("", (String) null, UserType.GUEST);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
195 次 |
| 最近记录: |