Un blog C# y subtipos genéricos

34 views
Skip to first unread message

Alfredo Paz Valderrama

unread,
Mar 14, 2010, 8:27:45 PM3/14/10
to episu...@googlegroups.com
Por favor revisen esta información y opinen sobre ella en esta lista,
habrá puntos en participación para los que lo hagan.

saludos

--
Alfredo Paz-Valderrama
Sociedad Peruana de Computación

Alfredo Paz Valderrama

unread,
Mar 16, 2010, 8:30:10 AM3/16/10
to episu...@googlegroups.com
http://blogs.msdn.com/csharpfaq/archive/2010/02/16/covariance-and-contravariance-faq.aspx

ahora sí allí va la dirección del blog.

saludos

2010/3/14 Alfredo Paz Valderrama <alfre...@gmail.com>:

jota

unread,
Mar 15, 2010, 11:33:22 PM3/15/10
to EPISUNSA-TO
Los subtipos genericos en Java son muy parecidos a los templates en C+
+ pero tienen sus diferencias. En los manuales que se encuentran en
internet se puede observar que los ejemplos mas tipicos son con
contenedores de datos. Por ejemplo:

List myIntList = new LinkedList(); // 1
myIntList.add(new Integer(0)); // 2
Integer x = (Integer) myIntList.iterator().next(); // 3

Y usando subtipos genericos

List<Integer> myIntList = new LinkedList<Integer>(); // 1’
myIntList.add(new Integer(0)); //2’
Integer x = myIntList.iterator().next(); // 3’

Como se observa en el codigo se consigue dos cosas. La primera y mas
obvia es evitar el cast y la segunda es que se consigue que el
compilador pueda chequear si el tipo es correcto.

Ademas estos tipos genericos se compilan una sola vez, y se convierten
en un archivo de clase, como cualquier otra declaracion de clases o
interfaces.

Los tipos genericos nos permiten usar wildcards o comodines. Por
ejemplo:

void printCollection(Collection<?> c)
{
for (Object e : c)
{ System.out.println(e);
}
}

Esta funcion nos permite imprimir una coleccion sin importar su tipo.
Los tipos genericos dan una gran flexibilidad.

Este link habla mas detalladamente sobre tipos genericos.

http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf


Jose Carlos Manrique


On Mar 14, 7:27 pm, Alfredo Paz Valderrama <alfredop...@gmail.com>
wrote:

jota

unread,
Mar 16, 2010, 1:59:11 PM3/16/10
to EPISUNSA-TO

El concepto de subtipos genericos no es nuevo. Se puede observar lo
mismo en Java en este link

http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf

Los subtipos genericos como se muestra en el blog pueden parecer
similares a los templates en C++, pero el compilador los trata de
manera diferente. En el caso de los templates el compilador no compila
el archivo template hasta que se especifica un tipo, en ese momento el
compilador inserta el codigo con el tipo definido, inclusive si es que
ya se ha definido este tipo anteriormente.

Los subtipos genericos son compilados una sola vez como cualquier
tipo. Esto se logra usando el lenguaje intermedio (IL o CLR). Se
almacena parametros o place holders y metadata. Estos parametros y
metadata seran reemplazados luego, cuando se especifique el tipo.

Los subtipos genericos nos brindan mayor seguridad consiguiendo que el
compilador sepa con que tipos se trabaja. Se consigue lo que se conoce
como type-safety. Ademas evitan el uso de casts, lo que mejora el
desempeno.

Jose Carlos Manrique

Carmen

unread,
Mar 19, 2010, 5:19:31 PM3/19/10
to EPISUNSA-TO
Existe una restriccion en los parámetros de un tipo genérico, llamada
naked constraint,
la cual en un ejemplo de internet la usan para remediar el problema de
asignar un vector
de string a un vector de objetos, lo que no es recomendable ya que
tendriamos un error
en tiempo de ejecución al intentar hacer obj[0] = 5; como se vio en el
blog.

aqui dejo el link http://www.marteens.com/pdfs/csharp_intsight.pdf
esta en la pagina 81.

Reply all
Reply to author
Forward
0 new messages