04 2020 档案

摘要:首先,来介绍几个术语。泛型类或接口是指,声明里有一个或多个类型参数的类或接口[JLS, 8.1.2, 9.1.2]。例如,List接口就有一个类型参数,E,它表示了List的元素类型。接口的全名是List(读作“E的列表”),但人们通常简称它为列表。泛型类和接口都被称为泛型类型 每个泛型类型都定义了 阅读全文
posted @ 2020-04-26 17:59 webzom 阅读(291) 评论(0) 推荐(0) 编辑
摘要:yaml配置文件 x 1 spring: 2 elasticsearch: 3 rest: 4 uris: localhost:9200 5 server: 6 port: 9000 x 1 @Data 2 @AllArgsConstructor 3 @NoArgsConstructor 4 // 阅读全文
posted @ 2020-04-23 13:44 webzom 阅读(937) 评论(0) 推荐(0) 编辑
摘要:字段类型概述一级分类 二级分类 具体类型核心类型 字符串类型 string,text,keyword整数类型 integer,long,short,byte浮点类型 double,float,half_float,scaled_float逻辑类型 boolean日期类型 date范围类型 range 阅读全文
posted @ 2020-04-23 01:19 webzom 阅读(198) 评论(0) 推荐(0) 编辑
摘要:虽然 Java 编译器允许在单个源文件中定义多个顶级类,但这样做没有任何好处,并且存在重大风险。 风险源于在源文件中定义多个顶级类使得为类提供多个定义成为可能。 使用哪个定义会受到源文件传递给编译器的顺序的影响。 public class Main { public static void main 阅读全文
posted @ 2020-04-23 01:14 webzom 阅读(170) 评论(0) 推荐(0) 编辑
摘要:嵌套类(nested class)是在另一个类中定义的类。 嵌套类应该只存在于其宿主类(enclosing class)中。 如果一个嵌套类在其他一些情况下是有用的,那么它应该是一个顶级类。 有四种嵌套类: 静态成员类,非静态成员类,匿名类和局部类。 除了第一种以外,剩下的三种都被称为内部类(inn 阅读全文
posted @ 2020-04-21 06:42 webzom 阅读(183) 评论(0) 推荐(0) 编辑
摘要:有时你可能会碰到一个类,它的实例有两个或更多的风格,并且包含一个标签字段(tag field), 表示实例的风格。 例如,考虑这个类,它可以表示一个圆形或矩形: x // Tagged class - vastly inferior to a class hierarchy! class Figur 阅读全文
posted @ 2020-04-17 00:07 webzom 阅读(141) 评论(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 阅读(652) 评论(0) 推荐(0) 编辑
摘要:当类实现接口时,该接口作为一种类型(type),可以用来引用类的实例。因此,一个类实现了一个接口,因此表明客户端可以如何处理类的实例。为其他目的定义接口是不合适的。 一种失败的接口就是所谓的常量接口(constant interface)。 这样的接口不包含任何方法; 它只包含静态 final 属性 阅读全文
posted @ 2020-04-15 05:59 webzom 阅读(225) 评论(0) 推荐(0) 编辑
摘要:在 Java 8 之前,不可能在不破坏现有实现的情况下为接口添加方法。 如果向接口添加了一个新方法,现有的实现通常会缺少该方法,从而导致编译时错误。 在 Java 8 中,添加了默认方法(default method)构造[JLS 9.4],目的是允许将方法添加到现有的接口。 但是增加新的方法到现有 阅读全文
posted @ 2020-04-15 05:49 webzom 阅读(144) 评论(0) 推荐(0) 编辑
摘要:接口是定义混合类型(mixin)的理想选择。 一般来说,mixin 是一个类,除了它的“主类型”之外,还可以声明它提供了一些可选的行为。 例如, Comparable 是一个类型接口,它允许一个类声明它的实例相对于其他可相互比较的对象是有序的。 这样的接口被称为类型,因为它允许可选功能被“混合”到类 阅读全文
posted @ 2020-04-14 06:05 webzom 阅读(196) 评论(0) 推荐(0) 编辑
摘要:条目 18 中提醒你注意继承没有设计和文档说明的「外来」类的子类化的危险。 那么对于专门为了继承而设计并且具有良好文档说明的类而言,这又意味着什么呢?首先,这个类必须准确地描述重写每个方法带来的影响。 换句话说,该类必须文档说明可重写方法的自用性(self-use)。 对于每个 public 或者 阅读全文
posted @ 2020-04-10 04:22 webzom 阅读(198) 评论(0) 推荐(0) 编辑
摘要:与方法调用不同,继承打破了封装 换句话说,一个子类依赖于其父类的实现细节来保证其正确的功能。 父类的实现可能会从发布版本不断变化,如果是这样,子类可能会被破坏,即使它的代码没有任何改变。 因此,一个子类必须与其超类一起更新而变化,除非父类的作者为了继承的目的而专门设计它,并对应有文档的说明 只有在子 阅读全文
posted @ 2020-04-10 04:04 webzom 阅读(231) 评论(0) 推荐(0) 编辑
摘要:不可变类简单来说是其实例不能被修改的类。 包含在每个实例中的所有信息在对象的生命周期中是固定的,因此不会观察到任何变化。 Java 平台类库包含许多不可变的类,包括 String 类、基本类型包装类以及 BigInteger 类和 BigDecimal 类。 有很多很好的理由:不可变类比可变类更易于 阅读全文
posted @ 2020-04-06 18:25 webzom 阅读(117) 评论(0) 推荐(0) 编辑
摘要:有时候,你可能会试图写一些退化的类(degenerate classes),除了集中实例属性之外别无用处 class Point { public double x; public double y; } 由于这些类的数据属性可以直接被访问,因此这些类不提供封装的好处(详见第 15 条)。 如果不更 阅读全文
posted @ 2020-04-06 18:24 webzom 阅读(181) 评论(0) 推荐(0) 编辑
摘要:将设计良好的组件与设计不佳的组件区分开来的最重要的因素是,隐藏内部数据和其他实现细节的程度。一个设计良好的组件隐藏了它的所有实现细节,干净地将它的 API 与它的实现分离开来。然后,组件只通过它们的 API 进行通信,并且对彼此的内部工作一无所知。这一概念,被称为信息隐藏或封装,是软件设计的基本原则 阅读全文
posted @ 2020-04-06 18:15 webzom 阅读(135) 评论(0) 推荐(0) 编辑
摘要:compareTo 方法并没有在 Object 类中声明。 相反,它是 Comparable 接口中的唯一方法。 它与 Object 类的 equals 方法在性质上是相似的,除了它允许在简 单的相等比较之外的顺序比较,它是泛型的。 通过实现 Comparable 接口,一个类表明它的实例有一 个自 阅读全文
posted @ 2020-04-03 00:57 webzom 阅读(184) 评论(0) 推荐(0) 编辑
摘要:Cloneable 接口的目的是作为一个 mixin 接口 (详见第 20 条),公布这样的类允许克隆。不幸的 是,它没有达到这个目的。它的主要缺点是缺少 clone 方法,而 Object 的 clone 方法是受保护的。你不 能,不借助反射 (详见第 65 条),仅仅因为它实现了 Cloneab 阅读全文
posted @ 2020-04-01 03:49 webzom 阅读(880) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示