varargs uso son parametros metodo los llamar cuales con argumentos java delegates variadic-functions

java - uso - Cómo llamar a un método varargs con un argumento adicional de un método varargs



uso de argumentos en java (4)

Ahora solo veo una forma: crear una matriz con dimensión [args] + 1 y copiar todos los elementos en una nueva matriz.

No hay forma más sencilla. myobj crear una nueva matriz e incluir myobj como último elemento de la matriz.

String[] args2 = Arrays.copyOf(args, args.length + 1); args2[args2.length-1] = myobj; sys(args2);

Si por casualidad dependes de Apache Commons Lang puedes hacerlo

sys(ArrayUtils.add(args, myobj));

o guayaba

sys(ObjectArrays.concat(args, myobj));

Tengo algunas funciones del sistema varargs, donde T es un tipo real, como String :

sys(T... args)

Quiero crear una función propia, que delegue en la función del sistema. Mi función es también una función de varargs. Quiero pasar a través de todos los argumentos de mi función a la función del sistema, además de un argumento final adicional. Algo como esto:

myfunc(T... args) { T myobj = new T(); sys(args, myobj); // <- of course, here error. }

¿Cómo necesito cambiar la línea con el error? Ahora solo veo una forma: crear una matriz con dimensión [args] + 1 y copiar todos los elementos en la nueva matriz. Pero tal vez exista una forma más sencilla?


Puede llamar a sys() dos veces si a la orden no le importa:

T myobj=new T(); sys(myobj); sys(args);

Si no puede usar esto, cambie a colecciones (por ejemplo, LinkedList) para todas sus funciones.


Si puedes usar Guava , entonces puedes hacer:

sys(ObjectArrays.concat(myobj, args))


Solución de Java 8:

sys(Stream.concat(Arrays.stream(args), Stream.of(myobj)).toArray(T[]::new));