Isam H. Abuaqlain:
Eu tenho um método que aceita qualquer número de parâmetros inteiros: pages(int,int...)
Este método é selecionar algumas páginas do arquivo PDF.
Páginas do livro armazenadas como um tipo de cadeia como este:
String pages = "1,2,3,6,9";
Eu quero fazer essa string como o parâmetro do método para se parecer com:
pages(1,2,3,6,9);
barra invertida:
Isso pode ser feito facilmente com correntes:
Stream
.of(commaSeparated.split(","))
.mapToInt(Integer::parseInt)
.toArray();
Você pode combinar isso com varargs para obter o que deseja:
public static void main (String[] args) {
String commaSeparated = "0,1,2,3,4,5,6,7,8,9";
int[] arguments =
Stream
.of(commaSeparated.split(","))
.mapToInt(Integer::parseInt)
.toArray();
pages(arguments);
}
public static void pages(int... numbers) {
System.out.println("numbers: " + Arrays.toString(numbers));
}
Saída será:
numbers: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Nota: é claro varargs não é necessário neste caso específico, é útil somente se você pretende chamar o mesmo método com um número variável de int
argumentos, caso contrário, você pode simplesmente mudar a sua assinatura para pages(int[] numbers)
.