这是我想要实现的目标的一个小例子。我有一个有很多参数的类 - Dog。我有一个子类JumpyDog,我想了解如何“扩展” 的实例Dog以使其成为 的实例JumpyDog。
class Dog {
int age, numberOfTeeth, grumpiness, manyOtherParameters;
JumpyDog learnToJump(int height) {
JumpyDog jumpy = new JumpyDog(this); // I do not want to copy all parameters
jumpy.jumpHeight=height;
return jumpy;
}
}
class JumpyDog extends Dog {
int jumpHeight;
void jump(){}
}
Run Code Online (Sandbox Code Playgroud)
或者我可以这样说:
Dog dog=new Dog();
dog.makeJumpy();
dog.jump()
Run Code Online (Sandbox Code Playgroud) 这是代码:
val m=scala.collection.mutable.HashMap[String, Long]()
var i=m.get("foo")
i=i+i
Run Code Online (Sandbox Code Playgroud)
这是错误:
Error:(28, 9) type mismatch;
found : AnyVal
required: String
i=i+i
^
Run Code Online (Sandbox Code Playgroud)
为什么i突然变成AnyVal?为什么String这里需要我的地图中的值Long?
非常感谢