2015-08-25 4 views
2

Предоставлено class Foo[F[_]], как я могу получить объект Class? Обычный синтаксис не работает:classOf [] для более высокого типа

scala> classOf[Foo[_]] 
<console>:9: error: _$1 takes no type parameters, expected: one 
       classOf[Foo[_]] 
         ^

Ни делает

scala> classOf[Foo[_[_]]] 
<console>:9: error: _$1 does not take type parameters 
       classOf[Foo[_[_]]] 
         ^

ответ

3

Ах, да. Оставляя это в случае, если кто-то смотрит на него:

scala> classOf[Foo[F] forSome { type F[_] }] 
warning: there were 1 feature warning(s); re-run with -feature for details 
res0: Class[Foo[_[_] <: Any]] = class Foo 
+0

Это хороший пример того, как вы можете попасть в беду, потому что Scala использует тот же синтаксис 'F [_]' иногда означать более-kinded типа, иногда экзистенциальный тип. –

 Смежные вопросы

  • Нет связанных вопросов^_^