Une fois scalac est un compilateur, il a le potentiel d'être en mesure d'embellir le code généré avec les données des structures sont nécessaires pour mettre en œuvre réifiée génériques.
Ce que je veux dire, c'est que scalac aurait la capacité de voir...
// definition
class Klass[T] {
value : T
}
//calls
floats = Klass[float]
doubles = Klass[double]
... et de "développer" à quelque chose comme ceci:
// definition
class Klass_float {
value : float
}
class Klass_double {
value : double
}
// calls
floats = Klass_float
doubles = Klass_double
Modifier
Le point est: le compilateur a la capacité de créer toutes les structures de données nécessaires qui démontrent à être nécessaire pour fournir des informations de type à l'exécution. Une fois que ce type d'information est disponible, la Scala exécution serait en profiter et peut effectuer tous les types de courant des opérations, nous pouvons imaginer. Il n'est pas question de savoir si la JVM fournit bytecode pour réifiée génériques ou pas. Le travail n'est pas fait par la JVM, mais par la Scala de la bibliothèque.
Si vous avez déjà écrit un débogueur symbolique (je l'ai fait!), vous savez que vous pouvez en principe 'dump' toutes les informations le compilateur a au moment de la compilation dans le binaire généré, l'adoption de toutes les données de l'organisation démontre être plus pratique pour la suite du traitement. C'est exactement la même idée: 'dump' toutes les informations de type de la Scala compilateur a.
En un mot, je ne vois pas pourquoi il ne pourrait pas être possible, n'a pas d'importance si la JVM fournit natif opérations pour réifiée génériques ou pas.
Une autre édition
IBM X10 démontre la capacité je parle de: il compile le code X10 sur le code Java, en tirant parti de réifiée des génériques sur les plates-formes Java. Comme je l'ai mentionné avant: Il peut être fait, mais seulement par des personnes qui savent comment un compilateur fonctionne et comment une bibliothèque d'exécution peuvent tirer parti de l'information "sous-évaluées" par le compilateur au moment de la compilation sur le code généré. Plus d'infos au: http://x10.sourceforge.net/documentation/papers/X10Workshop2012/slides/Takeuchi.pdf