2013-02-21 9 views
5

Próbuję wyświetlić wszystkie klasy z pakietu i wyodrębnić niektóre informacje o metadanych za pomocą nowego interfejsu api (2.10).Konwertuj klasę [_] na universe.Type/Symbol

Mogę się mylić, ale wydaje mi się, że nie ma wsparcia dla wystawiania klas z pakietu na scala api.

Używam java library, ale zwraca tylko Class<?>

Możliwe jest konwertować Class[_] do universe.Type lub universe.Symbol?

Odpowiedz

10

ty powinien korzystać z lusterek od scala.reflect.runtime.universe (JavaUniverse)

Załóżmy, że masz klasę Czas:

val cls: Class[_] = someObject.getClass 

powinien dostać runtimeMmirror (JavaMirror) do classloader i wywołać jej classSymbol metodę, która zamienia czas pracy class to ClassSymbol dla tego wszechświata:

import scala.reflect.runtime._ 

val typ: universe.ClassSymbol = universe.runtimeMirror(cls.getClassLoader).classSymbol(cls)