我试图模仿default
C#的关键字:
private class Default[T] {
private var default : T = _
def get = default
}
然后在我定义的包对象中:
def default[T] = new Default[T].get
我希望default[Int]
是0
,但是
println(default[String])
println(default[Int])
println(default[Double])
println(default[Boolean])
所有印刷品null
。然而
val x = default[Int]
println(x)
打印0
。如果我添加类型注释: Any
,x
它会再次打印null
。
我猜是因为println
期望在Any
那里发生相同类型的参数。
将表达式分配给更通用类型的变量怎么可能改变该表达式的值?我觉得这真的违反直觉。
它与拳击有关吗,所以我实际上是在调用两个不同的default
函数(一次是原语int
,一次是Integer
)?如果是,有没有办法避免这种情况?