Существует ли манифест для абстрактных типов, как для параметризованных типов? - PullRequest
3 голосов
/ 28 января 2012

Интересно, не могли бы вы написать что-то вроде следующего в Scala:

abstract class Foo

trait Bar {

  type Foo_Tpe <: Foo : Manifest[Foo_Tpe]

  def fooClass = classOf[Foo_Tpe]

}

Ответы [ 2 ]

1 голос
/ 29 января 2012

Да и нет. Вы можете сделать это:

val man = manifest[Foo_Tpe]

В этот момент он скажет вам, что у него нет манифеста для этого.

0 голосов
/ 28 января 2012

Нет, но вы можете попросить подкласс предоставить его:

trait Bar {

  type Foo_Tpe <: Foo

  protected def fooManifest: Manifest[Foo_Tpe]

  def fooClass = fooManifest.erasure

}
...