上一页 1 2 3 4 5 6 7 8 ··· 13 下一页
摘要: 嵌套类(nested class)是在另一个类中定义的类。 嵌套类应该只存在于其宿主类(enclosing class)中。 如果一个嵌套类在其他一些情况下是有用的,那么它应该是一个顶级类。 有四种嵌套类: 静态成员类,非静态成员类,匿名类和局部类。 除了第一种以外,剩下的三种都被称为内部类(inn 阅读全文
posted @ 2020-04-21 06:42 webzom 阅读(185) 评论(0) 推荐(0)
摘要: 有时你可能会碰到一个类,它的实例有两个或更多的风格,并且包含一个标签字段(tag field), 表示实例的风格。 例如,考虑这个类,它可以表示一个圆形或矩形: x // Tagged class - vastly inferior to a class hierarchy! class Figur 阅读全文
posted @ 2020-04-17 00:07 webzom 阅读(148) 评论(0) 推荐(0)
摘要: version: '2' services: elasticsearch: image: elasticsearch:7.6.1 ports: - "9200:9200" - "9300:9300" environment: discovery.type: single-node kibana: i 阅读全文
posted @ 2020-04-16 18:03 webzom 阅读(660) 评论(0) 推荐(0)
摘要: 当类实现接口时,该接口作为一种类型(type),可以用来引用类的实例。因此,一个类实现了一个接口,因此表明客户端可以如何处理类的实例。为其他目的定义接口是不合适的。 一种失败的接口就是所谓的常量接口(constant interface)。 这样的接口不包含任何方法; 它只包含静态 final 属性 阅读全文
posted @ 2020-04-15 05:59 webzom 阅读(229) 评论(0) 推荐(0)
摘要: 在 Java 8 之前,不可能在不破坏现有实现的情况下为接口添加方法。 如果向接口添加了一个新方法,现有的实现通常会缺少该方法,从而导致编译时错误。 在 Java 8 中,添加了默认方法(default method)构造[JLS 9.4],目的是允许将方法添加到现有的接口。 但是增加新的方法到现有 阅读全文
posted @ 2020-04-15 05:49 webzom 阅读(149) 评论(0) 推荐(0)
摘要: 接口是定义混合类型(mixin)的理想选择。 一般来说,mixin 是一个类,除了它的“主类型”之外,还可以声明它提供了一些可选的行为。 例如, Comparable 是一个类型接口,它允许一个类声明它的实例相对于其他可相互比较的对象是有序的。 这样的接口被称为类型,因为它允许可选功能被“混合”到类 阅读全文
posted @ 2020-04-14 06:05 webzom 阅读(207) 评论(0) 推荐(0)
摘要: 条目 18 中提醒你注意继承没有设计和文档说明的「外来」类的子类化的危险。 那么对于专门为了继承而设计并且具有良好文档说明的类而言,这又意味着什么呢?首先,这个类必须准确地描述重写每个方法带来的影响。 换句话说,该类必须文档说明可重写方法的自用性(self-use)。 对于每个 public 或者 阅读全文
posted @ 2020-04-10 04:22 webzom 阅读(206) 评论(0) 推荐(0)
摘要: 与方法调用不同,继承打破了封装 换句话说,一个子类依赖于其父类的实现细节来保证其正确的功能。 父类的实现可能会从发布版本不断变化,如果是这样,子类可能会被破坏,即使它的代码没有任何改变。 因此,一个子类必须与其超类一起更新而变化,除非父类的作者为了继承的目的而专门设计它,并对应有文档的说明 只有在子 阅读全文
posted @ 2020-04-10 04:04 webzom 阅读(236) 评论(0) 推荐(0)
摘要: 不可变类简单来说是其实例不能被修改的类。 包含在每个实例中的所有信息在对象的生命周期中是固定的,因此不会观察到任何变化。 Java 平台类库包含许多不可变的类,包括 String 类、基本类型包装类以及 BigInteger 类和 BigDecimal 类。 有很多很好的理由:不可变类比可变类更易于 阅读全文
posted @ 2020-04-06 18:25 webzom 阅读(120) 评论(0) 推荐(0)
摘要: 有时候,你可能会试图写一些退化的类(degenerate classes),除了集中实例属性之外别无用处 class Point { public double x; public double y; } 由于这些类的数据属性可以直接被访问,因此这些类不提供封装的好处(详见第 15 条)。 如果不更 阅读全文
posted @ 2020-04-06 18:24 webzom 阅读(190) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 ··· 13 下一页