https://imgur.com/nb6sjuK

No entiendo lo que hace el identificador en este ejemplo, soy nuevo en programación y me doy cuenta de que ArrayList<String> crea la lista de cadenas y lo mismo con LinkedList<String>, pero qué sucede cuando presionas una clase en el identificador, como - LinkedList<Song> - y Song es una clase. Gracias por adelantado.

public class Main {
    private static ArrayList<Album> albums = new ArrayList<Album>();

    LinkedList<Song> playlist = new LinkedList<Song>();

    public static void main(String[] args) {


    // write your code here

        Album album = new Album("StormBringer" , "Deep Purple");
        album.addSong("Stormbringer" , 4.6);
        album.addSong("Love don't mean a thing" , 4.22);
0
Tornike Shelia 15 nov. 2017 a las 11:04

2 respuestas

La mejor respuesta

pero ¿qué sucede cuando presionas un class en el identifier?

Primero que nada, no es un identificador, es un Type, y así es como Genéricos funciona, pasa un Type entre <>, por lo que el compilador conoce el Type esperado para este genérico clase (aquí la Colección). Y las colecciones List, Set ... son buenos ejemplos de Implementaciones genéricas.

Y como Song es una clase String también es una clase predefinida en el paquete java.lang, por lo que cuando pasa una clase a su colección, el compilador espera que todos los elementos de esta colección son de este Type.

Por ejemplo en su código:

LinkedList<Song> playlist = new LinkedList<Song>();

Se espera que todos los elementos playlist sean instancias de la clase Song.

1
cнŝdk 15 nov. 2017 a las 08:48

String es una clase como Song también es una clase. Significa que solo puede insertar objetos de esta clase en su List. No se permite agregar objetos de otras clases porque el tipo no coincide. Si intenta hacerlo, se producirá un error de compilación. Entonces su lista es tipo guardar. Esta función se denomina genéricos.

2
Simulant 15 nov. 2017 a las 08:07