日常 - 真随笔
对于 JDK 源码的一些误解
这是一篇小记录,起因是看到 Arrays 源码产生的不理解。
/**
* @since 1.2
*/
public class Arrays {
public static void sort(int[] a) {
DualPivotQuicksort.sort(a, 0, a.length - 1, null, 0, 0);
}
}
/**
* @since 1.7
*/
final class DualPivotQuicksort {
}
Arrays 内部源码居然是后来才写的,让我感到疑惑,后来想明白了,误解之处在于:一直认为 JDK 源码包内容是不能修改的;其实应该这么理解,Java 不会废除原有的特性。
像 Python 2.x 到 Python 3.x 那种不兼容问题在 Java 中不能出现,Java 具有向前兼容的特性,对于一些已有的特性,但是不是很好用的,最多也只是添加 @Deprecated 注解不建议使用。但是可没有说源码不可以修改,最佳的例子就是 HashMap 1.7 和 1.8 版本之间的跨度,代码从 1000+ 改到 2000+。
Java 语言增加的新特性不会影响原有的特性,就是向前兼容,如同 Interface 中添加的 default 方法。
public interface InterfaceTest01 {
void fun1();
default void fun2() {
}
}
随笔
这篇是自己的一些小结,很多细节没有考证过,如有疏漏请指正为感。