Existe-t-il un moyen d'obtenir de manière générique un manifeste de type Scala? Par exemple, si je n'ai qu'une référence de classe avec laquelle travailler, est-il possible d'obtenir le manifeste correspondant?Généraliser un manifeste de type Scala
3
A
Répondre
7
Le implicitly[T]
intégré de Scala vous obtiendra une valeur implicite de type T (s'il en existe une). Alors implicitly[Manifest[T]]
retournera un Manifest pour le type T.
Si vous avez une référence de classe, vous pouvez obtenir le Manifest pour la classe comme ceci:
def manifestFor[T: Manifest](c: Class[T]) = implicitly[Manifest[T]]
class Foo
val x = new Foo
manifestFor(x.getClass)
//scala.reflect.Manifest[_ <: Foo] = _ <: Foo
type du Manifest est _ <: Foo
au lieu de simplement Foo
, mais ils sont égaux.
implicitly[Manifest[Foo]] == manifestFor(x.getClass)
//Boolean = true
0
Eh bien, j'essayais de faire quelque chose de similaire, mais de façon réfléchie. Je n'avais aucun symbole de classe au moment de la compilation disponible. J'ai dû utiliser ce code, pas si évident à partir des scaladocs, avec de multiples méthodes non évidentes et trompeuses présentes près de ce point, de sorte qu'il serait probablement utile aux autres.
Manifest.classType(Class.forName(className))
Questions connexes
- 1. Comment puis-je généraliser un type Hashmap en Java?
- 2. Scala - aliasing un type dans un type
- 3. Quelle est la différence entre un type de type latent et un type de manifeste?
- 4. Généraliser un algorithme linéaire simple
- 5. Généraliser XPaths
- 6. Comment généraliser l'option f #?
- 7. Comment bien imprimer un type de scala?
- 8. À quoi sert le manifeste OptManifest de Scala et NoManifest?
- 9. Généraliser ce code jquery
- 10. Manifeste contre ClassManifest. Que signifie cette erreur Scala?
- 11. Généraliser la requête LINQ?
- 12. Généraliser une méthode d'extension pour fonctionner avec tout type
- 13. Généraliser un programme en utilisant iglob
- 14. obtenir le paramètre de type pour un type Scala
- 15. Scala type de requête type Boolean
- 16. paramétrisation de type de Scala
- 17. Problème de type Scala (inférence)?
- 18. Type de paramétrage dans Scala
- 19. Erreur d'incompatibilité de type Scala
- 20. Déclaration de type dans Scala
- 21. Scala Option Type de retour
- 22. Conversion explicite Type Scala
- 23. Scala et UnionTypes lié à un type
- 24. Spécifiez plusieurs contraintes sur un type (Scala)
- 25. Comment passer un type brut dans Scala?
- 26. Comment analyser un type dans Scala
- 27. scala type 'extraction'
- 28. scala dynamiquement type déterminé
- 29. Type Scala erreur de compilation
- 30. inférence de type Scala question
Vous pouvez également utiliser 'manifest [T]', ce qui revient généralement à implicitly [Manifest [T]] '. – tenshi
Bonnes choses - Merci! – Josh