Foros del Web » Programación para mayores de 30 ;) » Java »

obtener la clase de un tipo en generics

Estas en el tema de obtener la clase de un tipo en generics en el foro de Java en Foros del Web. Holas: Estoy usando generics para implementar una clase. El código de la misma es: Código: public class nombre<T> { public T obtener() { Class claseTipo ...
  #1 (permalink)  
Antiguo 18/02/2008, 23:18
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
Busqueda obtener la clase de un tipo en generics

Holas:

Estoy usando generics para implementar una clase. El código de la misma es:

Código:
public class nombre<T> {
public T obtener() { Class claseTipo = ... ; }
}
Lo que quiero hacer en el método obtener(), es que de alguna manera obtener la clase del tipo T con el cual se declara la clase, para luego obtener el nombre de la misma.

Digamos que quisiera hacer algo como T.class
pero este código no compila.

¿Alguna idea?

Desde ya muchas gracias
  #2 (permalink)  
Antiguo 19/02/2008, 01:32
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: obtener la clase de un tipo en generics

Si no me equivoco, uno de los problemas de los Generics tal y como estan implementados en Java es que son simplemente "sintactic sugar", es decir, cambios esteticos a nivel del compilador. El codigo compilado no tiene informacion sobre lo que pusiste en tus Generics, asi que me temo que no se puede obtener directamente esa informacion que buscas.

Hay diferentes estrategias para obtener esa informacion, aunque ninguna es muy "elegante" ya que hay que repertir el tipo al construir, o algun mecanismo similar.

Puedes ver esta discusión sobre el tema:
http://www.artima.com/weblogs/viewpo...?thread=208860

S!

PD: no te puedo decir mucho mas por que explicitamente no uso Generics .
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #3 (permalink)  
Antiguo 19/02/2008, 01:39
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: obtener la clase de un tipo en generics

Por refinarlo aun mas y no confundir, lo que no se puede obtener así por las buenas es el tipo del Generico, pero por supuesto que una vez tienes una instancia, de esa si puedes obtener el tipo que tiene. Eso lo aclaran aqui:
http://joe.truemesh.com/blog//000495.html

Es decir, si tienes un lista genérica del tipo A y tu puedes meter Bs por que B extiende a A, en ejecucion tu puedes averiguar que la instancia que has metido es del tipo B, obviamente, lo que no puedes saber es que la lista está restringida al tipo A.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #4 (permalink)  
Antiguo 19/02/2008, 09:49
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
Re: obtener la clase de un tipo en generics

Ok gracias por al ayuda, desde que no pude hacer un T.class, supuse que para lograr lo que quiero tendría que recurrir a soluciones no muy elegantes.

Gracias por la ayuda
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:10.