1,防禦性程式設計。必要時應當考慮採取保護性拷貝的手段來保護內部的私有資料,先來看下面這個例子:
pubic
final
class
period
public
dategetstart()
public
dategetend()}
這個類存在兩個不安全的地方,首先來看第乙個攻擊**
datestart
=new
date();
dateend
=new
date();
periodp
=new
period(start,end);
end.setyear(
78);
//改變p的內部資料!
這是因為外部和內部引用了同樣的資料,為了解決這個問題,應當修改period的建構函式:
public
period(datestart,dateend)
這樣內部的私有資料就與外部物件指向不同,則不會被外部改變
再來看第二個攻擊**:
datestart
=new
date();
dateend
=new
date();
periodp
=new
period(start,end);
p.getend().setyear(
78);
//改變p的內部資料!
這很顯然是由於公有方法暴露了內部私有資料,我們可以只返回內部私有資料的唯讀版本(即其乙份拷貝)
public
dategetstart()
public
dategetend()
2,讀到上面這個例子,我想起來了下面這樣的**片段
public
class
suit
public
stringtostring()
public
intcompareto(objecto)
public
static
final
suitclubs
=new
suit(
"clubs");
public
static
final
suitdiamonds
=new
suit(
"diamonds");
public
static
final
suithearts
=new
suit(
"hearts");
public
static
final
suitspades
=new
suit(
"spades");
private
static
final
suitprivate_values=;
public
static
final
listvalues
=collections.unmodifiedlist(arrays.aslist(private_values));}
讀書筆記2
關於this指標 雖然this指標大家已經很熟悉了,但是我這裡討論的關於this指標的問題可能大家還沒注意過 為了說明這個關於this的歸屬問題,我自寫了一段再簡單不過的程式,雖簡單但具體 include class a void aa 我的問題是指標p1是指向b自身嗎?一看程式,大家就知道 不是,...
讀書筆記(2)
沉默的藝術 意識科學基礎理論 量子效應只是用於穩定某種內在自由度極大的基本粒子,然後再用基本粒子的內在屬性產生意識體驗。只能通過呈現乙個系統的 物理 屬性來描述乙個系統。只能通過變成內在屬性配對的其中乙個系統,以直接體驗的方式來獲得這些內在屬性的資訊。定義乙個包含所有系統的系統d,除該系統外無任何系...
讀書筆記2
ripple專注於跨境支付領域,主要為銀行和其他金融機構提供基於區塊鏈協議的外匯 轉賬方案。目前已公布的銀行客戶有3家,並正在和另外80多家銀行深入洽談。ripple主 要通過其開發的interledger協議專案,在保持銀行等金融機構的各自不同的記賬系統的基 礎上,打造乙個全球統一的網路金融傳輸協...