2011-07-25 32 views
6

Encontré la palabra en mi libro de texto en el capítulo sobre Colecciones y genéricos.¿Qué significa el término "restringido" en java?

se

"Dado que el tipo de objetos en una clase genérica está restringido, los elementos se puede acceder sin la colada." La sentencia

En pocas palabras, ¿alguien puede explicar lo que significa la oración?

+0

su información, echa un vistazo a esto: http://stackoverflow.com/questions/6165822/what-is-this-mean-in-the-arraylist-in-java/6165827#6165827 –

Respuesta

0

Esto significa que si tiene una clase genérica, por ejemplo una colección, de tipo T, solo puede poner instancias de T allí.

Por ejemplo:

List<String> onlyStrings = new ArrayList<String>(); 

onlyStrings.add("cool"); // we're fine. 
onlyStrings.add("foo"); // still fine. 
onlyStrings.add(1);  // this will cause a compile-time error. 
+0

su información, su totalidad la respuesta es irrelevante para la pregunta formulada. Consulte la respuesta de @ fastcodejava para saber cómo responder a la pregunta – Bohemian

+0

De hecho, gracias Oso –

1

Comprobar my own answer aquí.

Dado que el tipo de objetos en una clase genérica está restringida, los elementos pueden ser accedidos sin poner en

Una de las ventajas de utilizar el código genérico sobre el tipo de prima es que necesita no tienen que devolver el resultado al tipo apropiado explícitamente. Se realiza de forma implícita por el compilador utilizando una técnica llamada Type Erasure.

Supongamos, tomemos el ejemplo de los genéricos.

List<Integer> ls= new ArrayList<Integer>(); 

ls.add(1); // we're fine. 
ls.add(2); // still fine. 
ls.add("hello");  // this will cause a compile-time error. 

Integer i = ls.get(2); // no explicit type casting required 

Esto sucede porque la lista se declaró para almacenar única lista de números enteros

7

Cuando se utiliza una colección sin genéricos, la colección va a aceptar objeto, lo que significa que todo en Java (y es también va a dar objeto si se intenta obtener algo de él):

List objects = new ArrayList(); 
objects.add("Some Text"); 
objects.add(1); 
objects.add(new Date()); 

Object object = objects.get(0); // it's a String, but the collection does not know 

una vez que utilice los genéricos que restringen el tipo de datos de un collectio n puede contener:

List<String> objects = new ArrayList<String>(); 
objects.add("Some text"); 
objects.add("Another text"); 

String text = objects.get(0); // the collection knows it holds only String objects to the return when trying to get something is always a String 

objects.add(1); //this one is going to cause a compilation error, as this collection accepts only String and not Integer objects 

Así que la restricción es que se fuerza la colección usar sólo un tipo específico y no todo lo que lo haría si no había definido la firma genérica.

2
List<Animal> animals = new ArrayList<Animal>(); 
// add some animals to the list. 
// now it only had animals not fruits, so you can 
Animal animal = animals.get(0); // no casting necessary 
+1

¡Felicitaciones! La respuesta ** SOLO ** cuyos ejemplos de código abordan la pregunta * y no más * – Bohemian

+0

@Bohemian ¿Es eso un requisito? –

Cuestiones relacionadas