0
奇怪的情况下这是我的代码直&简单:Scala ClassTag&classOf和type参数。泛型
package scalaproj
import scala.reflect._
case class MyClass() {}
def bar[T](cls : Class[T]) = println(cls)
def foobar[T: ClassTag] = println(classTag[T])
bar(classOf[MyClass])
foobar[MyClass]
Results: class scalaproj.GetFields$MyClass$2
scalaproj.GetFields$MyClass$2
现在,我想离不开著名的错误如下:“需要类类型而T3发现”
def foo[T] = println(classOf[T])
foo[MyClass]
FOO只是一个采用通用类型参数并且不需要值参数的函数。我认为这很奇怪,因为这两个例子可以工作,并且所有的灵活性都融入了Scala语言和它的泛型。
更新:
只是为了进一步指定陌生感:
def foo1[T](t : T) = {} // no compile error
def foo2[T](): List[T] = { List[T]() } // no compile error
def foo3[T](): T = { T() } // compile error: "not found: value T"
一个很好的解释表示赞赏。