我有可以采用单个文件名或文件数组/列表的方法,并对它们进行一些处理,如下所示:
public void methodName(String file, int arg2) {
...
}
或者
public void methodName(String[] files, int arg2) {
...
}
假设它有相同的机会获取单个文件或文件列表。在没有其他限制的情况下,针对这种情况的最佳设计方法是什么?
- 创建方法 1 并围绕它编写包装器来处理文件列表
public void methodName(String file, int arg2) {
...
}
public void methodName2(String[] fileName, int arg2) {
for(String fn : fileName) {
methodName(fn, arg2);
}
}
- 创建方法 2 并编写包装器来处理单个文件实例
public void methodName(String[] files, int arg2) {
...
}
public void methodName2(String file, int arg2) {
methodName(new String[]{file});
}
- 通过数组接受单个和多个参数
public void methodName(String[] files, int arg2){
...
}
methodName(new String[]{"fileOne"});
methodName(new String[]{"fileOne", "fileTwo"});
选项 3 在传递参数时似乎有点粗糙;必须为单个实例创建数组。
- 也许是一种不同的方法。假设 var args 不适合通过更改参数 other 来实现。
为了将来的可维护性,您现在应该考虑哪些事情?
最佳答案
选项 3 可以使用可变参数,请注意,arg2 必须位于方法声明中的文件之前
public void methodName(int arg2, String... files) {
for (String file: files) {
}
}
关于选项 1 和 2,它们基本相同,但内部差异很小。不过,您应该利用方法重载并使用相同的方法名称,这将为公共(public)方法的用户带来很大的优势。
public void methodName(String file, int arg2) {
...
}
public void methodName(String[] file, int arg2) {
...
}
这当然适用于选项 1 和 2
关于java - 方法设计方法,其中方法采用可变数量的参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60756706/