Hola!
Para demostrar que el código cumple con el ejercicio no está de más incluir algún mensaje para comprobarlo:
import java.util.LinkedList;
import java.util.Arrays;
import java.util.List;
public class TransformacionEnArrayList{
public static void main(String []Args){
Boolean [] miListaDeBooleans = {true,true,false,false,true,false};
List<Boolean> miListaLinkedList = new LinkedList<Boolean>();
miListaLinkedList = Arrays.asList(miListaDeBooleans);
for (int i=0; i<miListaDeBooleans.length; i++) {
System.out.println("El array original: "+miListaDeBooleans[i]);}
System.out.println("La colección de objetos es "+miListaLinkedList);
}
}
¿Por qué el segundo código no funciona? Porque el método asList de la clase Arrays del api java tiene esta signatura:
static <T> List<T> asList(T... a)
Returns a fixed-size list backed by the specified array.
Te pide específicamente que sea List. Como tú dices, cabría esperar que el compilador reconociera que el objeto pasado al ser un LinkedList también es un List, pero hay veces que el compilador no llega tan lejos como nosotros suponemos que va a llegar.
Se puede usar esto (casting):
import java.util.LinkedList;
import java.util.Arrays;
import java.util.List;
public class TransformacionEnArrayList{
public static void main(String []Args){
Boolean [] miListaDeBooleans = {true,true,false,false,true,false};
LinkedList<Boolean> miListaLinkedList = new LinkedList<Boolean>();
miListaLinkedList = (LinkedList)Arrays.asList(miListaDeBooleans);
}
}
Pero esto se considera una operación insegura (y salta un warning) por lo que es preferible declararlo como has planteado en la solución al ejercicio
Saludos!