A classOf[T]
là giá trị của loại Class[T]
. Nói cách khác, classOf[T]: Class[T]
. Ví dụ:
scala> val strClass = classOf[String]
strClass: Class[String] = class java.lang.String
scala> :t strClass
Class[String]
này cho phép một để hạn chế các thông số được sử dụng trong phương pháp phản xạ:
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])
sai. 'x.getClass()' tương ứng với 'x.getClass()' trong Scala (dấu ngoặc đơn tùy chọn). –
Điều này không đúng. 'classOf [X]' tương ứng với 'X.class' trong Java - nó trả về đối tượng của lớp' Class [X] '. –
Đã sửa câu trả lời của tôi sau khi nhận xét. –