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()这样的方法

  • 相关阅读:
    Python 2 与 python 3的区别
    语法基础题
    Python运算符_ 2018-07-26
    Python 各种语句:2018-07-27
    解决在Python中使用Win32api报错的问题,No module named win32api
    在CenOS7.5里安装Redis
    下载Redis
    重置CentOS6.5的登录口令
    如何在CentOS里切换操作系统所用的语言,中英文切换
    在Ubuntu里安装Mysql5.7.23
  • 原文地址:https://www.cnblogs.com/jiangz222/p/4934700.html
Copyright © 2011-2022 走看看