![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
effective java 读书笔记
a921122
这个作者很懒,什么都没留下…
展开
-
Effective Java 读书笔记——42:慎用可变参数
从Java 1.5开始就增加了可变参数(varargs)方法,又称作variable arity method。可变参数方法接受0个或多个指定类型的参数。它的机制是先创建一个数组,数组的大小为调用位置所传递的参数数量,然后将值传到数组中,最后将数组传递到方法。 例如下面有个例子,返回多个参数的和: // Simple use of varargs - Page 197 stat原创 2017-02-08 06:21:42 · 842 阅读 · 0 评论 -
Effective Java 读书笔记——15:使可变性最小化
不可变类 不可变类是它的实例不能被修改的类。每个实例中所有的信息,必须在创建的时候提供,并在其整个对象周期内固定不变,例如:String,基本的包装类,BigInteger和BigDecimal。不可变的类更加的易于设计、实现和使用。它们不容易出错,而且更加安全。 为了使类成为不可变的,一般遵循以下几个原则: 不要提供任何会修改对象状态的方法(改变对象属性的方法,也称为mut原创 2017-01-30 00:38:16 · 494 阅读 · 0 评论 -
Effective Java 读书笔记——66:同步访问共享的可变数据
关键字synchronized可以保证同一时刻,只有一个线程可以执行某个方法。 同步的概念 1、当一个对象被一个线程修改的时候,可以阻止另一个线程观察到对象内部不一致的状态; 2、同步不仅可以组织一个线程看到对象处于不一致的状态,还可以保证进入同步方法或者同步代码块的每个线程,都看到由同一个锁保护的之前所有的修改效果。 另外,java语言规范保证读写一个变量是原子的,除非这个变量是doub原创 2017-01-27 14:03:11 · 853 阅读 · 3 评论 -
Effective Java 读书笔记——71:慎用延迟初始化
部分内容参考: http://blog.csdn.net/fgakjfd/article/details/5282646 延迟初始化 延迟初始化(Lazy Initialization)是延迟到需要域的值时才将它初始化的行为。不过对于延迟初始化,建议“除非绝对必要,否则就不要这么做”。 静态内部类 如果你不需要内部类对象与其外围类对象之间有联系,那你可以将内部原创 2017-01-27 04:30:52 · 1740 阅读 · 0 评论 -
Effective Java 读书笔记——38:检查参数的有效性
一般在方法执行之前先检查参数的有效性,如果参数值无效,那么很快它就会失败,并且清楚的抛出合适的异常。 如果这个方法没有检查参数的异常,那么可能在方法处理中出现令人费解的异常。更糟糕的有可能是,方法可以正常返回,但是却使得某个对象处于被破坏的状态. 抛出异常 对于公有方法,可以在Javadoc中的@throw标签来说明违反异常时所抛出的异常类型。一旦在文档中说明了异常,那么强加这些类型的异常检原创 2017-01-31 05:41:29 · 818 阅读 · 0 评论 -
Effective Java 读书笔记——1:考虑用静态工厂方法代替构造器
类可以提供一个公有的静态工厂方法(static factory method),是一个用来返回类的实例静态方法。比如,下面可以通过boolean来返回Boolean对象引用的方法: public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } 上面是一个非常简单的静态工厂方法,原创 2017-02-02 00:02:14 · 307 阅读 · 0 评论 -
Effective Java 读书笔记——41:慎用重载
先看一个使用重载错误的例子: public class CollectionClassifier { public static String classify(Set s) { return "Set"; } public static String classify(List lst) { return "List"; }原创 2017-02-02 11:27:02 · 1032 阅读 · 0 评论 -
Effective Java 读书笔记——43:返回零长度的数组或者集合,而不是null
我们先看一个比较常见的例子: private final List cheesesInStock=new ArrayList<>(); public Cheese[] getCheeses() { if(cheesesInStock.size()==0) { return null; } .... } 把没有cheese可买当做一种特例,这是不合适的。如果这么做的原创 2017-02-16 08:40:31 · 581 阅读 · 0 评论