zoukankan      html  css  js  c++  java
  • [Effective Java 读书笔记] 第7章 方法

    第39条 必要时进行保护性拷贝

    对于可变类,如果作为参数传入到自己的类里,并作为自己类的数据使用存储时,需要进行保护性拷贝,比如Date是可变的,如果传入一个Date类,最好做一个保护性拷贝,以免在调用完Period后,外面将传入的参数start进行更改,影响自己类的this.start:

    public Period(Date start)
    {
        this.start = new Date(start.getTime());        
    }

    同理,如果是作为返回对象,也需要做返回的保护性拷贝

    public Date start()
    {
         return new Date(this.start.getTime());  
    }

     第41条 慎用重载

    类中方法的重载,如果只是参数类型不同,其他都相同,那么可能出现问题。因为重载方法是在编译时决定调用哪一个的,而编译时不能像运行时那样向下转型获得真实的对象类型:

    public class CollentionClassifier{
    public static String classify(Set<?> s){
    }
    public static String classify(Collections<?> s){
    }
    public static void main(String[] args){
        
    Collection<?> cll = new HashSet<String>();
    classify(cll);//因为编译时决定重载方法的调用,而编译时只知道Collection,不知道它是Set类型,所以会走到Collection参数的方法中
    }

    而方法的覆盖就是动态的,就是子类覆盖父类的方法,使用对应的对象实例调用方法,会调用到自己类中的方法。

    安全的方法,是不要使用两个具有相同参数数目的重载方法,甚至可以尽量避免重载方法的使用,使用readBoolean(),readInt()这样的方法

  • 相关阅读:
    HDOJ_ACM_超级楼梯
    HDOJ_ACM_下沙的沙子有几粒?
    杭电_ACM_How Many Trees
    HDOJ_ACM_Tiling_easy version
    HDOJ_ACM_母牛的故事
    HDOJ_ACM_小兔的棋盘
    HDOJ_ACM_一只小蜜蜂
    杭电_ACM_Count the Trees
    HDOJ_ACM_折线分割平面
    Sun Solaris下JAVA以及JSP开发环境的配制小记
  • 原文地址:https://www.cnblogs.com/jiangz222/p/4934700.html
Copyright © 2011-2022 走看看