¿Por qué es o bien colada o el uso de medicamentos genéricos necesarios para la adición de cadenas de ArrayLists en Java?

Ronald:

Estoy tratando de entender ArrayLists y en el proceso he dado cuenta también lo necesario para comprender los genéricos, tipos de primas y más información sobre la conversión de tipos. Estoy leyendo el tutorial de Oracle y este es el ejemplo que dan de por qué los genéricos son útiles:

El siguiente fragmento de código sin genéricos requiere de calidad:

List list = new ArrayList();
list.add("hello");
String s = (String) list.get(0);

Lo que no entiendo es por qué es necesario en este tipo de fundición porque por lo que yo puedo decir 'list.get (0)' es de tipo 'cadena' antes y después del encasillamiento. He utilizado el código aquí para comprobar el tipo, no está seguro de si es correcto o no.

List list = new ArrayList();
list.add("hello");

Object obj= list.get(0);

Class cls=obj.getClass();

String answer = cls.getSimpleName();
System.out.println(answer);

String s = (String) list.get(0);

Object obj2= list.get(0);

Class cls2=obj2.getClass();
System.out.println(cls2);

String answer2 = cls2.getSimpleName();
System.out.println(answer2);

Así que estoy pidiendo una explicación de por qué la conversión de tipos es necesaria aquí y en ArrayLists aquí no genéricos en general ed.

John Kugelman:

El tipo de tiempo de ejecución es String, pero el tipo en tiempo de compilación es Object. El compilador no sabe lo que es una prima ArrayListse mantiene, por lo que cuando se llama a get()asigna un tipo de tiempo de compilación de Object. Una Objectno se puede asignar directamente a una String, por lo tanto el reparto.

El reparto es la manera del desarrollador de decir al compilador, "¿Crees que es una lista de Objects, pero confía en mí, lo que estoy sacando es definitivamente una String".

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=197779&siteId=1
Recomendado
Clasificación