1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
object A {
def f0[T](x: T): T = x
def f1[T](x: => T): T = x
def f2[T](x: () => T): T = x()
f0(this.getClass) // ok
f1(this.getClass)
f2(this.getClass) // ok
// a.scala:7: error: type mismatch;
// found : Class[_ <: A.type]
// required: Class[?0(in value x1)] where type ?0(in value x1) <: A.type
// Note: A.type >: ?0, but Java-defined class Class is invariant in type T.
// You may wish to investigate a wildcard type such as `_ >: ?0`. (SLS 3.2.10)
// val x1 = f1(this.getClass)
// ^
// one error found
}
|