EffectiveJava之19 用類層次代替聯合

2021-06-27 05:01:54 字數 812 閱讀 9351

1、  c中的聯合體:

typedef  enum shape_type

typedef  struct rectangledimensions_t

typedef  struct circle dimensions_t

typedef  struct dimensions

} shape_t

double area ( shape_t * pshape_t )

casecirc :

default: return -1;

把乙個可區分的聯合變換為乙個類層次:

先定義乙個抽象類,每個操作定義乙個抽象方法,其行為取決去便簽的值。

如上例:  area 這個首相類的類層次的根(root)。

如果有其他的操作行為不依賴於標籤的值,則吧這些操作變成根類中的具體方法。

Effective Java學習筆記(1)

第1條 用靜態工廠方法代替建構函式 如boolean類中的乙個簡單的例子 public static boolean valueof boolean b 好處有3個 與建構函式不同,靜態工廠方法具有名字 每次被呼叫時不要求非得建立乙個新的物件 他們可以返回乙個原返回型別的子型別物件。缺點有2個 類如...

Effective Java之泛型 總結

第23條 請不要在新 中使用原生態型別 如果使用原生態型別 就失掉了泛型在安全性和表述性方面的所有優勢 如果使用像list這樣的原生態型別 就會失掉型別安全性 但是如果使用像list這樣的引數化型別 則不會 在類文字 class literal 中必須使用原生態型別 set是個引數化型別 表示可以包...

Effective Java之通用程式設計 總結

第45條 將區域性變數的作用域最小化 要使區域性變數的作用域最小化 最有力的方法就是在第一次使用它的地方宣告 幾乎每個區域性變數的宣告都應該包含乙個初始化表示式 如果在迴圈終止之後不再需要迴圈變數的內容 for迴圈就優先於while迴圈 for int i 0,n expensivecomputat...