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

  • 相关阅读:
    Volatile关键字
    ThreadPoolExecutor线程池基本原理及使用
    HashMap线程不安全源码解析(1.7 + 1.8)
    SpringBoot+ajax+formData实现图片上传和回显
    BloomFilter
    POST和GET
    快手电话面试
    Apache SSI 远程命令执行漏洞
    SYSTEM--服务器提权
    封神台靶场练习(2)
  • 原文地址:https://www.cnblogs.com/jiangz222/p/4934700.html
Copyright © 2020-2023  润新知