`

Effective java 代码优化实例2

阅读更多
package chape7;
/**
* 檢查參數的有效性
*    當編寫方法或者構造器時,應該考慮他的參數有什麽限制 應該吧這些限制寫在文檔中,並且在這個方法的開頭處,通過顯示的檢查
* 來實施這些限制。養成這樣的習慣很重要
*   當判斷一個數據的合法性的時候就要拋出異常。 這裡就涉及到異常 第九章 60條:優先使用標準的異常 就是java自帶的異常
* 這也是一種類的重用的表現;  
* 常用的异常:
* IllegalArgumentException     非null的参数数值不正确;传入的参数不合法;
* IllegalStateException        对于方法调用而言,对象状态不合法比如摸个对象在被正确的初始化之前就调用 会抛出这个异常
* NullPointerException 空指针异常 在禁止null的情况下使用了null值;
* IndexOutOfBoundsException    下标参数越界
* ConcurrentModificationException 当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。
* UnsupportedOperationException  当不支持请求的操作时,抛出该异常
* @author lee
*
*/
public class Chape38 {

/**
* @param args
*/
public static void main(String[] args) {
Nuter nu = new Nuter.Builder (200,2).fat(-1).sodium(20).build();

}
}
class Nuter
{
private final int size;
private final int sering;
private final int fat;
private final int sodium;

public static class Builder
{
//这两个参数时必须的参数
private final int size;
private final int sering;
//下面是可选的参数 设置了默认值
private  int fat = 0;
private  int sodium = 0;

public Builder (int size ,int sering)
{
this.sering = sering;
this.size = size;
}

public Builder fat (int val)
{
/**
* 断言的使用
* 在這裡判斷數據的合法性 *
*/
if(val < 0)
{
throw new IllegalArgumentException ("val必須大於零");
}
fat = val;
return this;
}
public Builder sodium (int val)
{
this.sodium = val;
return this;
}
public Nuter build ()
{
return new Nuter (this);
}
}
private Nuter (Builder buder)
{
this.size = buder.size;
this.sering = buder.sering;
this.sodium = buder.sodium;
this.fat = buder.fat;
}
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics