Java 如何将可变参数传递给另一个函数,例如 Paths.get()
Java how can I pass varargs to another function like Paths.get()
我正在尝试将可变参数传递给 Paths.get()
根据我的理解,varargs 本质上被解释为一个数组。但是 get()
方法需要单个字符串而不是一个字符串数组。
如何将可变参数传递给方法?
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;
}
您必须明确处理第一个参数的分隔:
Path path = Paths.get(stringArgs[0], Arrays.copyOfRange(stringArgs, 1, sLen);
另一种做法是模仿 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
故意使用两个参数来明确告诉用户至少需要一个字符串。在我看来,在它上面实现一个允许传递空数组的方法只是 RuntimeException
在等待。
我正在尝试将可变参数传递给 Paths.get()
根据我的理解,varargs 本质上被解释为一个数组。但是 get()
方法需要单个字符串而不是一个字符串数组。
如何将可变参数传递给方法?
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;
}
您必须明确处理第一个参数的分隔:
Path path = Paths.get(stringArgs[0], Arrays.copyOfRange(stringArgs, 1, sLen);
另一种做法是模仿 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
故意使用两个参数来明确告诉用户至少需要一个字符串。在我看来,在它上面实现一个允许传递空数组的方法只是 RuntimeException
在等待。