如果答案是否定的, 就必须对该对象进行保护性拷贝, 并且让拷贝之后的对象而不是原始对象进入到数据结构中.在内部组件被返回给客户端之前, 对它们进行保护性拷贝也是同样的道理.如果参数的类型是可以被不被信任的人子类化的....第52条 慎用重载对于重载(overload)方法的选择是静态的, 而对于被覆盖(override)方法的选择则是动态的.选择被覆盖方法的正确版本是在运行时进行的, 选择的依据是被调用方法所在对象的运行时类型....所以子类方法与基类签名相同, 则覆盖基类, 尽管对象声明为基类, 但是调用时用的是子类的实现.但重载的选择工作是在编译时进行的, 完全基于参数的编译时类型...., 应该返回一个零长度的数组或者集合, 没理由返回null. -> 不好用, 容易出错, 没有性能优势.开销考虑:在这个级别上担心性能问题是不明智的, 除非分析表明这个方法是造成性能问题的真正源头.对于不返回任何元素的调用...: Optional: 不可变容器, 含有一个或0个值.Optional的精神和checked exception一样, 强迫用户意识到返回值有可能是为空的.例子:// Using an optional