關(guān)于 java.util.calender 設(shè)計(jì)時(shí)候一些想法
關(guān)于 java.util.calender 設(shè)計(jì)時(shí)候一些想法
new calender() 以后,考慮到性能 setday(), setyear() 都完成后,如果遇到要get 輸出才根據(jù)情況重新計(jì)算.
如果我們遇到了設(shè)計(jì)一個(gè)處理信息的類,這個(gè)類有多個(gè)參與計(jì)算的要素,如果計(jì)算復(fù)雜,那就完全沒有必要經(jīng)常重復(fù)計(jì)算。
class a {
private int data1; //數(shù)據(jù)元素1
private long date2;? //數(shù)據(jù)元素2
//變化標(biāo)志? 如果true
private boolean? flag;?
setdate1 (){? flag =true; //元素變化過了? } ..
getdate1(){?? }..
process(){
? if(flag){
?? //確定更新后? 重新計(jì)算
? }
}
getresult(){
?? process();? // 計(jì)算性的結(jié)果
?? return ...
? }
}
calender 因?yàn)槭褂昧诉@種計(jì)算方式的一些細(xì)節(jié):
初時(shí)日期 1999-8-31日
調(diào)用 set(Calendar.MONTH, Calendar.SEPTEMBER)? 便更了數(shù)據(jù)模型了一部分
因?yàn)椴淮嬖?? 9月31日?? 所以??? 1999 - 9 月 只有 30日
一旦使用get方法返回 結(jié)果。那么重新計(jì)算獲得 10月1日 。
(根據(jù)
例如,lenient 模式下的 GregorianCalendar 將 MONTH == JANUARY、DAY_OF_MONTH == 32 解釋為 February 1。
1月沒有 32天? 所以 就延后 1天 到了2月1日
?)
2006年10月23日14:29:40
下面這段來自 java 手冊(cè)翻譯。
示例:假定 GregorianCalendar 最初被設(shè)置為 1999 年 8 月 31 日。
調(diào)用 set(Calendar.MONTH, Calendar.SEPTEMBER) 將該日期設(shè)置為 1999 年 9 月 31 日。
如果隨后調(diào)用 getTime(),那么這是分析 1999 年 10 月 1 日的一個(gè)暫時(shí)內(nèi)部表示。
但是,在調(diào)用 getTime() 之前調(diào)用 set(Calendar.DAY_OF_MONTH, 30) 會(huì)將該日期
設(shè)置為 1999 年 9 月 30 日,因?yàn)樵谡{(diào)用 set() 之后沒有發(fā)生重新計(jì)算。
?
posted on 2006-10-23 14:35 小高 閱讀(843) 評(píng)論(0) 編輯 收藏 所屬分類: java基礎(chǔ)