A classOf[T] - value of type Class[T] . In other words, classOf[T]: Class[T] . For instance:
scala> val strClass = classOf[String] strClass: Class[String] = class java.lang.String scala> :t strClass Class[String]
This allows you to limit the parameters used in reflective methods:
scala> :paste // Entering paste mode (ctrl-D to finish) sealed trait Fruit case class Apple(name: String) extends Fruit case class Pear(name: String) extends Fruit // Exiting paste mode, now interpreting. defined trait Fruit defined class Apple defined class Pear scala> def fruitFunction(kind: Class[_ <: Fruit]) { println("Fruity...") } fruitFunction: (kind: Class[_ <: Fruit])Unit scala> fruitFunction(classOf[Apple]) Fruity... scala> fruitFunction(classOf[String]) <console>:13: error: type mismatch; found : Class[String](classOf[java.lang.String]) required: Class[_ <: Fruit] fruitFunction(classOf[String])
source share