第23条,检查参数有效性。在类中检查参数有效性还是很必要的。根据相应的错误显示相应的错误信息更为必要。这么做,一、能很快结束当前程序。有错误,就到此为止。二、方便查找错误。如果错误参数在此时不报错,那么给后面的代码留下一个雷。不定什么时候炸了,还不知道因为什么炸的。
第24条,需要时使用保护性拷贝。以前真没意识到偷天换日如此厉害。Java是一种安全性的语言,但是即使在一门安全性的语言中,你也需要保护性的设计程序。假使类的客户会尽一切手段来破坏类的约束条件,在这样的前提下必须保护性的设计程序。比如下面一则程序:
public final class Period{
public Period(Date start,Date end){
if(start.compareTo(end)>0){
throw new IllegalArgumentException(start + "after" + end);
}
this.start = start;
this.end = end;
}
public Date start(){
return start;
}
public Date end(){
return end;
}
}
乍一看,这段代码没什么问题,这个类是非可变的,还做了时间顺序的判断。可是一意识到Date对象本身可变,就知道这个参数的约束性很容易被违反。看下面的调用就知道问题了。
Date start = new Date();
Date end = new Date();
Period p = new Period(start, end);
start.setYear(78);
为了免受这种攻击,所以对该类的构造函数的每个参数进行保护性拷贝(defensive copy)是必要的。代码如下:
public Period(Date start, Date end){
this.start = new Date(start.getTime());
this.end = new Date(s.getTime());
if(this.start.compareTo(this.end)>0)
throw new IllegalArgumentException(start + "after" + end);
}
分享到:
相关推荐
3. **泛型**:第二版《Effective Java》详尽讨论了Java泛型,包括其基本概念、类型擦除、边界通配符、类型推断以及如何有效地使用泛型类和泛型方法。 4. **构造器**:书中阐述了如何设计和使用构造器来创建对象,...
effective_robotics_programming_with_ros配套例程代码
目录:一、创建和销毁对象 (1 ~ 7)二、对于所有对象都通用的方法 (8 ~ 12)三、类和接口 (13 ~ 22)四、泛型 (23 ~ 29)五、枚举和注解 (30 ~ 37)六、方法 (38 ~ 44)七、通用程序设计 (45 ~ 56)八、异常 ...
Effective Java是一本关于Java编程语言的经典书籍,本笔记主要总结了Java语言的发展历程、静态工厂方法的应用、构造器模式的使用等重要知识点。 一、Java语言的发展历程 Java语言的发展可追溯到1991年,当时由...
"Effective Java 读书分享" 《Effective Java》读书分享.pptx 是一本 Java 编程语言指南,旨在帮助开发者编写高质量、可维护的 Java 代码。该书包含 90 个条目,每个条目讨论一条规则,涵盖了 Java 编程语言的...
标题《effective-java.pdf》表明本文档是关于Java编程语言的实践指南,而描述说明了这是一份根据网上资源翻译后的HTML版本,经过转换形成的PDF文件,其内容可供参考。标签“java”指明文档内容与Java编程语言紧密...
effective c++ and more effective c++ so good to use
"Effective_java_new"可能指的是该书的一个更新版或解读版。在深入探讨这个主题之前,我们先来了解一下Java编程中的几个核心概念和最佳实践。 1. **接口优先于类(Interfaces over Classes)**:Java中的接口提供了...
《Effective Java》是Java开发领域的经典著作,作者Joshua Bloch深入浅出地阐述了编写高效、健壮的Java代码的技巧和最佳实践。以下是对该书部分内容的详细解释: 1. **产生和销毁对象** - Item1:静态工厂方法相比...
侯捷大师翻译,中文版Effective_STL_50条有效使用STL的经验_技术经典著作大系
《Effective_C#中文版:改善C#程序的50种方法》读书笔记
Effective_Perl_Programming_Writing_Better_Programs_with_Perl.rar Effective_Perl_Programming_Writing_Better_Programs_with_Perl.rar
Effective_C++中文版Effective_C++中文版
《Effective Java》是Java编程领域的一本经典著作,由Joshua Bloch撰写,该书的第三版继续提供了关于如何编写高效、优雅、可维护的Java代码的指导。以下是基于给出的目录和部分内容提取的一些关键知识点: ### 第一...
Effective_C#_(中文版)epub电子书,可以导入到iphone中查看,Effective_C#_(中文版)epub电子书,可以导入到iphone中查看
Effective_Modern_C++
《Effective Java》是Java编程领域的一本经典著作,由Joshua Bloch撰写,现在已经更新到第三版。这本书汇集了作者多年的编程经验,提供了许多实用的编程准则和最佳实践,旨在帮助开发者写出更高效、更安全、更易于...