gpt4 book ai didi

java - 方法设计方法,其中方法采用可变数量的参数值

转载 作者:行者123 更新时间:2023-12-02 01:00:14 25 4
gpt4 key购买 nike

我有可以采用单个文件名或文件数组/列表的方法,并对它们进行一些处理,如下所示:

public void methodName(String file, int arg2) {
...
}

或者

public void methodName(String[] files, int arg2) {
...
}

假设它有相同的机会获取单个文件或文件列表。在没有其他限制的情况下,针对这种情况的最佳设计方法是什么?

  1. 创建方法 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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com