据我所知,在 Java 的编译期间,只记录类/方法签名。实际的实现在 JVM 中一直绑定到运行时。
让我们假设有一个名为MyClass
. 在 Java 1.6 版中:
public class NativeClass {
public String getVersion() { return "1.6"; }
}
在 Java 1.7 版中:
public class NativeClass {
public String getVersion() { return "1.7"; }
public String somethingMore() { return "more"; }
}
我们的 IDE 和编译器是 1.7。程序编译完成后,当我们在 JRE 1.6 和 1.7 中运行它时,我们会得到不同的返回值NativeClass.getVersion();
。这是众所周知的。
但是如果我们NativeClass.somethingMore()
在 JRE 1.6 上运行会发生什么?
如果可能,请在真实的 Java 源代码中给出一个示例,其中某些类/方法仅存在于较新的版本中。