标签:JDK
初步学习JDK的Enum类源码

最近有空看了 Enum 类的源码,下面只挑重点部分记录一下。 抽象类 所有 enum 类型自动继承自 Enum 类,由于 java 的单继承特性,也就使得 enum 类型不能继承,个人觉得这是缺点之一,平时开发中会有一些公共的代码无法通过继承来共享。 核心成员为 name 和 ordinal private final String name; private final int ordinal; name 是定义 enum 时的名字,ordinal 是位置,从 0 开始 实现 Comparable 接口 Enum 可比较,实现的 compareTo 方法如下: public fina...

阅读更多
初步学习JDK的String类源码

最近有空看了部分 String 类的源码,下面只挑重点部分记录一下。 为什么要用 final 修饰类 第一个比较特别的就是,String 类是用 final 修饰的,表明这个类不可被继承。 public final class String 为什么要防止被继承呢?经过一番研究和思考之后,目前比较靠谱的解析是:String 类是设计成不可变的。假设可以被继承,我们就可以写一个子类继承 String,然后覆盖它的部分方法,使得不可变性遭到破坏。最后,我们把这个子类传给使用方,使用方预期是一个不可变的 String 类,实际得到的是一个可变的子类,这样就出问题了。 使用 char value[]存...

阅读更多