actualización 2012-07-04:
Daniel SOBRAL (también) on SO detalles en su blog "JSON serialization with reflection in Scala! Part 1 - So you want to do reflection?" algunas de las características que vienen con la reflexión:
A modo de recapitulación, se Scala 2.10 ven con una biblioteca de reflexión Scala.
Esa biblioteca es utilizada por el compilador, pero dividida en capas a través de the cake pattern, por lo que diferentes usuarios verán diferentes niveles de detalle, manteniendo los tamaños de jar adecuados al uso de cada uno, y con suerte ocultando detalles no deseados.
La biblioteca de reflexión también se integra con las próximas macro instalaciones , permitiendo a los codificadores emprendedores manipular el código en tiempo de compilación.
actualización 2012-06-14. (de Eugene Burmako):
En Scala 2.10.0-M4, hemos lanzado la nueva API de reflexión que lo más probable que sea en 2.10.0 de final sin cambios significativos.
Más detalles acerca de la API se pueden encontrar:
Extractos:
universos y espejos son entidades ahora separadas:
- universos artefactos reflexión anfitrión (árboles, símbolos, tipos, etc.), la carga
- espejos resumen de esos artefactos (por ejemplo,
JavaMirror
carga cosas usando un cargador de clases y desapilador de anotaciones, mientras que GlobalMirror usa el compilador interno classreader
para lograr el mismo objetivo).
API de reflexión pública se divide en scala.reflect.base
y scala.reflect.api
.
- La primera representa una instantánea minimalista que es exactamente lo suficiente para compilar árboles y tipos reificados.
- Para compilar, pero no para analizar, todo lo que sea inteligente (por ejemplo, obtener una firma de tipo) se implementa en
scala.reflect.api
.
Ambos dominios de reflexión tienen su propio universo: scala.reflect.basis
y scala.reflect.runtime.universe
.
- El primero es super ligero y no implica ningún cargadores de clases,
- mientras que el segundo representa un compilador simplificada.
respuesta inicial, septiembre de 2011:
Se puede ver evoluciones del paquete de reflejar en el Scala GitHub repo, con estas dos confirmaciones muy recientes:
(Liftcode siendo, de acuerdo con this thread, tiene por objeto simplificar "la escritura de código que escribe el código")
La clase scala/reflect/internal/Importers.scala
(creada ayer!) Es un buen ejemplo del uso de los última función reflexión.
Reflexión. Mejora ... hmm. –
Oye, realmente quiero ejemplos, ¡hay una recompensa ahora! –
Bueno, todavía no hay ejemplos reales, y esta pregunta ahora es el éxito principal de Google para 'Scala reflection 2.10' Ho hum, @VonC lo tiene, creo, pero si alguien puede mostrarme el código de nivel de usuario, aún estaría agradecido. –