Date le variabili:Come rendere un metodo variatic prendere un singolo array come primo valore dell'array varargs?
Object[] ab = new Object[] { "a", "b" };
Object[] cd = new Object[] { "c", "d" };
Quando si chiama il seguente metodo:
public static void m(Object... objects) {
System.out.println(Arrays.asList(objects));
}
Usando:
m(ab, cd);
ottengo i risultati attesi:
[[Ljava.lang.Object;@3e25a5, [Ljava.lang.Object;@19821f]
Ma quando si utilizza:
m(ab);
ottengo:
[a, b]
Dato strings <- ab
e non strings[0] <- ab
.
Come posso forza al compilatore di prendere la matrice ab
come primo valore della matrice strings
, e quindi avere l'output:
[Ljava.lang.Object;@3e25a5
?
Un sovraccarico che accetta 'Oggetto []' e lo passa in 'm' potrebbe essere una soluzione qui. –
@defaultlocale Non è possibile rappresentare tale sovraccarico a livello di bytecode poiché risulterebbe in una firma duplicata. –
@MarkoTopolnik ringrazia per averlo indicato. Non avevo un compilatore a mano, quindi, un commento stupido. –