在查看此处var
所见的功能后:
我在使用 JDK 10 设置 Eclipse/IntelliJ IDEA IDE 时遇到了困难,因此我向拥有 Java 10 环境的 Stack Overflow 用户寻求帮助。
考虑以下:
public class A {
public void someMethod() { ... }
}
public class B extends A{
@Override
public void someMethod() { ... }
}
...
...
...
var myA = new A(); // Works as expected
myA = new B(); // Expected to fail in compilation due to var being
// syntactic sugar for declaring an A type
myA = (A) (new B()); // Should work
myA.someMethod(); // The question - which someMethod implementation is called?
使用时var
,我希望 JVM 能够识别变量所持有的派生类类型。并在执行 myA.someMethod() 时执行 B:someMethod() 而不是 A:someMethod()。
真的是这样吗?