`
dong_w_0418
  • 浏览: 2992 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Effective_Java读后感(方法)

    博客分类:
  • java
 
阅读更多

         第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);
    }

 

分享到:
评论

相关推荐

    1_Effective_Java_2nd_Edition_proglib_java_Joshua_

    3. **泛型**:第二版《Effective Java》详尽讨论了Java泛型,包括其基本概念、类型擦除、边界通配符、类型推断以及如何有效地使用泛型类和泛型方法。 4. **构造器**:书中阐述了如何设计和使用构造器来创建对象,...

    effective_robotics_programming_with_ros例程代码

    effective_robotics_programming_with_ros配套例程代码

    Effective.Java_Java8_并发_java_effectivejava_

    目录:一、创建和销毁对象 (1 ~ 7)二、对于所有对象都通用的方法 (8 ~ 12)三、类和接口 (13 ~ 22)四、泛型 (23 ~ 29)五、枚举和注解 (30 ~ 37)六、方法 (38 ~ 44)七、通用程序设计 (45 ~ 56)八、异常 ...

    Effective Java读书笔记.pdf

    Effective Java是一本关于Java编程语言的经典书籍,本笔记主要总结了Java语言的发展历程、静态工厂方法的应用、构造器模式的使用等重要知识点。 一、Java语言的发展历程 Java语言的发展可追溯到1991年,当时由...

    《Effective Java》读书分享.pptx

    "Effective Java 读书分享" 《Effective Java》读书分享.pptx 是一本 Java 编程语言指南,旨在帮助开发者编写高质量、可维护的 Java 代码。该书包含 90 个条目,每个条目讨论一条规则,涵盖了 Java 编程语言的...

    effective-java.pdf

    标题《effective-java.pdf》表明本文档是关于Java编程语言的实践指南,而描述说明了这是一份根据网上资源翻译后的HTML版本,经过转换形成的PDF文件,其内容可供参考。标签“java”指明文档内容与Java编程语言紧密...

    Effective_C++_and_More_Effective_C++.rar_Effective_effective C++

    effective c++ and more effective c++ so good to use

    effective_java_new:Effective_java_new

    "Effective_java_new"可能指的是该书的一个更新版或解读版。在深入探讨这个主题之前,我们先来了解一下Java编程中的几个核心概念和最佳实践。 1. **接口优先于类(Interfaces over Classes)**:Java中的接口提供了...

    effective java 读书笔记

    《Effective Java》是Java开发领域的经典著作,作者Joshua Bloch深入浅出地阐述了编写高效、健壮的Java代码的技巧和最佳实践。以下是对该书部分内容的详细解释: 1. **产生和销毁对象** - Item1:静态工厂方法相比...

    Effective_STL_50条有效使用STL的经验 epub

    侯捷大师翻译,中文版Effective_STL_50条有效使用STL的经验_技术经典著作大系

    《Effective_C#中文版:改善C#程序的50种方法》

    《Effective_C#中文版:改善C#程序的50种方法》读书笔记

    Effective_Perl_Programming_Writing_Better_Programs_with_Perl.rar

    Effective_Perl_Programming_Writing_Better_Programs_with_Perl.rar Effective_Perl_Programming_Writing_Better_Programs_with_Perl.rar

    Effective_C++中文版

    Effective_C++中文版Effective_C++中文版

    Effective Java第三版1

    《Effective Java》是Java编程领域的一本经典著作,由Joshua Bloch撰写,该书的第三版继续提供了关于如何编写高效、优雅、可维护的Java代码的指导。以下是基于给出的目录和部分内容提取的一些关键知识点: ### 第一...

    Effective_C#_(中文版) - Bill_Wagner.epub

    Effective_C#_(中文版)epub电子书,可以导入到iphone中查看,Effective_C#_(中文版)epub电子书,可以导入到iphone中查看

    Effective_Modern_C++

    Effective_Modern_C++

    EFFECTIVE_JAVA_3RD

    《Effective Java》是Java编程领域的一本经典著作,由Joshua Bloch撰写,现在已经更新到第三版。这本书汇集了作者多年的编程经验,提供了许多实用的编程准则和最佳实践,旨在帮助开发者写出更高效、更安全、更易于...

Global site tag (gtag.js) - Google Analytics