Mik*_*.K. 2 java methods types class
我想知道是否有一种方法来声明一个接受String和Enum的方法,但是如果使用某个枚举则只需要使用该字符串.
例:
public enum SearchType {
REGEX,DEFAULT
}
public static List<File> Search(String path, SearchType search, String pattern) {
//do things
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,只有程序员指定他们是否使用了特定的模式字符串字段SearchType.REGEX,如果您忘记了它,或者将其包含在a中SearchType.DEAFULT,您的程序将无法编译.
如果它们正在使用SearchType DEFAULT,程序员必须传入一个空字符串,并且代码必须使用几个if语句来检查互斥选项.现在,如果你包含一个带有DEFAULT的模式或忘记REGEX上的模式,我会抛出一个IllegalArgumentException,因为这两个事情都表明使用这个函数的人可能犯了一个错误.
我的问题是:
是否可以使用Java 8进行这种编译时参数检查?
有没有更惯用/安全/逻辑的方式来处理这种情况?
这听起来好像它可以通过某种接口来处理,如果它甚至可以完成的话.
谢谢!
您应该声明两个方法:一个方法被调用来做一个工作,而不是两个.所以在这里,您可以声明:
public static List<File> search(String path);
Run Code Online (Sandbox Code Playgroud)
和
public static List<File> search(String path, String pattern);
Run Code Online (Sandbox Code Playgroud)
SearchType在这种情况下,你的枚举是无用的.请记住将javadoc添加到您的方法中,用户不会感到困惑.
| 归档时间: |
|
| 查看次数: |
637 次 |
| 最近记录: |