Mientras navega por la documentación de la API Java 7 me topé con la nueva clase java.lang.ClassValue con la siguiente documentación más bien mínimas:ClassValue en Java 7
asocian Perezosamente un valor calculado con (potencialmente) cada tipo. Por ejemplo, si un lenguaje dinámico necesita construir una tabla de envío de mensajes para cada clase encontrada en un sitio de envío de mensajes, puede usar un
ClassValue
para almacenar en caché la información necesaria para enviar rápidamente el mensaje, para cada clase encontrada.
¿Alguien puede dar una mejor explicación de qué problema resuelve esta clase y tal vez algún ejemplo de código o proyecto de código abierto que ya utiliza esta clase?
Actualización: Todavía estoy interesado en algún código fuente real o ejemplos con esta nueva clase.
También encontré this mail on the mlvm-dev mailing list sobre algunas mejoras de implementación. Aparentemente se cambió de usar un WeakHashMap a un nuevo campo privado en java.lang.Class para hacerlo más escalable.
Lectura de la API se ha vinculado a me sugiere que el método 'get()' es el mejor lugar para la pistas. No entiendo por qué el método 'get()' recibe un objeto 'Class', sin embargo. – Raedwald
Actualmente hay un debate en la lista de distribución de core-libs (http://mail.openjdk.java.net/pipermail/mlvm-dev/2013-April/005321.html) sobre el uso de ClassValue en Groovy y sus interacciones con descarga de clases –