摘要:
Java中增加泛型之前,泛型是使用继承实现的(通用的Object) 这样,get一个值的时候要进行强制类型转换 add的时候没有错误检查,可以添加任何类的对象,不安全 加入类型参数以后,get直接拿到类型,不需要进行强制类型转换 add的时候直接检测,插入类型错误直接报错,更加安全,可读性好 Air 阅读全文
摘要:
使用异常机制的技巧: 不能用异常处理代替测试 不要过分细化异常 早抛出,晚捕获 使用断言: 断言机制允许在测试期间向代码中插入一些检査语句。当代码发布时, 这些插人的检测 语句将会被自动地移走。 assert 这个关键字有两种形式: assert 条件; 和 assert 条件: 表达式; 这两种形 阅读全文
摘要:
错误发生之后应该怎么办: •向用户通告错误; •保存所有的工作结果; •允许用户以妥善的形式退出程序。 Java中所有异常都是派生于类Throwable的一个实例: 各种异常分类的标准: RuntimeException相当于逻辑错误 关于受查异常和非受查异常: 方法后的声明: 如果在子类中覆盖了超 阅读全文
摘要:
匿名内部类 假如只创建这个类的一个对象,就不必命名了。这种类被称为匿名内部类 通常的格式: supertype可以是一个接口,内部类要实现这个接口,也可以是一个类,内部类就要扩展它 由于构造器的名字必须与类名相同, 而匿名类没有类名, 所以, 匿名类不能有构造器。 取而代之的是, 将构造器参数传递给 阅读全文
摘要:
关于Comparator接口的comparing方法中的键提取器函数: 还有thenComparing方法: ...一些琐碎的东西 内部类 内部类是定义在另一个类中的类 使用内部类的原因: A类包含B类,创建A类实例的过程中不会包含B类实例 b有一个隐式引用,指向了创建它的外部对象a 再具体一点的实 阅读全文
摘要:
Lambda表达式用于传递代码段并回调 Arrays.sort()的第二个参数可以用下面的Lambda表达式代替: 并且: 没有参数的情况: 类型推导: 省略小括号的情形: 无须指定返回值的类型: Lambda表达式不合法的情形: 函数式接口 下文中,让方法不再是抽象的意思是,子类不必须再去实现这个 阅读全文
摘要:
Arrays类中的sort方法可对实现了Comparable的接口进行排序 接口中所有的方法自动属于public,声明方法的时候,不必提供关键字public 接口中可以定义常量,不能含有实例域(实现接口的那个类实现方法和提供实例域) 可以将接口看做没有实例域的抽象类 实现接口的原因: 接口的一些特性 阅读全文
摘要:
枚举类 反射 反射进行数组转换的时候,参数标识为对象数组和对象有什么区别? 接口能取代函数指针嘛 继承的设计技巧 1 将公共操作和域放在超类 2 不要使用受保护的域(子类和同一个包中都能看到) 3 继承实现的是is-a 关系 4 除非所有继承的方法都有意义,否则不要使用继承 5 覆盖方法时,不要改变 阅读全文
摘要:
关于hashCode hashCode的产生原则: hashCode的改进过程: 更优的做法: equals方法与hashCode的联系: 数组的hashCode: toString方法 对象调用这个的话,返回表示对象值的字符串 数组的toString方法: String的equal hashCod 阅读全文
摘要:
在继承链上进行向下的转换的一些事项: 超类转换为子类前要检查(为什么要将超类转换成子类?这通常意味着超类的设计存在问题) 抽象类 如果一个方法用abstract修饰,则在这个类里就不用实现这个方法了 抽象类的语法和注意事项 子类是否实现抽象的影响: 注意: 关于抽象超类引用的问题: 关于调用的问题 阅读全文