Java如何将varargs传递给另一个函数,例如Paths.get()

时间:2018-08-09 16:49:06

标签: java arguments variadic-functions

我正在尝试将varargs传递给Paths.get()

据我了解,varargs本质上解释为数组。但是get()方法期望单个String不是一个String数组。

如何将可变参数传递给方法?

import java.nio.file.Path;
import java.nio.file.Paths;

public static Path getLogFilePath(String... stringArgs) {
    int sLen = stringArgs.length;

    Path path = Paths.get(stringArgs); // Cannot resolve method 'get(java.lang.String[])'
    return path;
}

2 个答案:

答案 0 :(得分:1)

您将必须明确处理第一个参数的分离:

Path path = Paths.get(stringArgs[0], Arrays.copyOfRange(stringArgs, 1, sLen);

答案 1 :(得分:1)

对此的另一种做法是模仿Paths.get()原型:

public static Path getLogFilePath(String first, String... others) {
    if( first == null) {
        throw new IllegalArgumentException("Always a first String !!!");
    }

    Path path = Paths.get(first, others); // Compiles !
    return path;
}

注意:Paths.get故意使用两个参数来明确告知用户至少需要一个String。我认为,在其上方实现允许传递空数组的方法,只是等待中的RuntimeException