zoukankan      html  css  js  c++  java
  • 日常

    对于 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() {
    
        }
        
    }
    

    随笔

    这篇是自己的一些小结,很多细节没有考证过,如有疏漏请指正为感。

  • 相关阅读:
    C++命名法则
    腾讯附加题---递归
    决策树
    ubuntu16.04安装后干的事
    node
    iview datetime日期时间限制
    GitLab CI/CD
    本地项目上传到github
    npm--配置私服
    gitlab添加yml文件.gitlab-ci.yml
  • 原文地址:https://www.cnblogs.com/chenxianbin/p/11896962.html
Copyright © 2011-2022 走看看