java中的returnthis問題文庫_第1頁
java中的returnthis問題文庫_第2頁
java中的returnthis問題文庫_第3頁
java中的returnthis問題文庫_第4頁
java中的returnthis問題文庫_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、java 中的 return this 問題return this ;人家都知道,這是返回當前對象引用,我就很郁悶,這個有什么好返冋的, 返回給誰? ? ?假設返回給a,那a為什么不用前面創(chuàng)建對象的變量直接去訪問,??? 補充:public class leafint i =0;leafin creme nt()i+;return this;void print()+ d;system.out.println( lfipublic staticvoid main(stri ngargs)leaf x = new leaf();x.increme nt();輸出結(jié)果是什么呢,難道是對象? ? ?

2、 ? ? ?郁悶! 我來回答回答(5)鐘鵬輝 項h經(jīng)理|1705個滿意答案2010-09-03返回當前類實例相當于new 了評論(0)00“我心飛揚2010-09-03這個問題就奇怪了,比如你吃飯有時用勺子用時要用筷子一樣。如果a是一個私有類,在b屮 要用到a的屬性this就有用了,通過構造器評論(0)00£憐 a邇的愛屬于莪2010-09-03x.increment(); 返回白身也就是說 x.increment()=x比如你要連續(xù)調(diào)用2次increment()一般的寫法是x.increme nt();x.increme nt();但是因為方法返回口身的引用所以可以這樣寫x.inc

3、rement().increme nt();好好體會一下this的妙用追問:return this 的作丿ij僅僅是 x.increment(); x.increment();i'j'以寫成 x.increment().increment();嗎? ? ?那也太花哨了吧回答:如果你只認為它有這種作用那你就大錯特錯了雖然我也不知道怎么跟你講但是既然return可以返回任何基本數(shù)據(jù)類型 和任何對象的引用,當然也可以返回它白身的引用縱觀jdk,冇很多類的方法都會返回其自身的引用像 stringbuffer當然要不要返回口身看場合論實際血不是一定要用評論(0)10正在輸入2010-09

4、-03 這個有點類似單列模式:單例模式就是某個類只存在一個對象(只new 次),當某個類 的初始化比較耗時,耗資源的時候,比如加載某些配置文件hibernate, spring的配置文件 等,一般會選擇單例模式。一、懶漢式單例在類被加載的吋候,唯一實例已經(jīng)被創(chuàng)建。這個設計模式在java中容易實現(xiàn),在別的語言 中難以實現(xiàn)。/靜態(tài)工廠方法,返回此類的唯一實例.*當發(fā)現(xiàn)實例沒冇初始化的時候,才初始化.* return lazysingleton*/synchronized public static lazysingleton get i nstance()if(m_intance=null)m_i

5、ntance=new lazysingleton();return m_intance; * created by intellij idea.* user: leizhimin* date: 2007-9-11* time: 14:57:08* «java與模式>> 單例模式懶漢式單例*/public class lazysingleton *私有靜態(tài)對象,加載時候不做初始化*/private static lazysingleton m_intance=null;*私有構造方法,避免外部創(chuàng)建實例*/private lazysingleton()二、餓漢式單例 在類加載

6、的時候不創(chuàng)建單例實例。只有在第一次請求實例的吋候的吋候創(chuàng)建,并i只在第一 次創(chuàng)建后,以后不再創(chuàng)建該類的實例。* created by intellij idea.* user: leizhimin * date: 2007-9-11 * time: 14:45:25 * «java與模式>> 單例模式餓漢式單例*/ public class eagersingleton *私有的(private)唯-(static final)實例成員,在類加載的時候就創(chuàng)建好了單例對象*/private static finml eagersingleton m_instance = n

7、ew eagersingleton();*私有構造方法,避免外部創(chuàng)建實例*/private eagersingleton() *靜態(tài)工廠方法,返回此類的唯一實例.* return eagersingleton*/public static eagersingleton getlnstance() return mnstance;三、登記式單例 這個單例實際上維護的是一組單例類的實例,將這些實例存放在一個map (登記薄)中, 對于己經(jīng)登記過的實例,則從工廠直接返回,對于沒有登記的,則先登記,而后返回。* created by intellij idea.* user: leizhimin* d

8、ate: 2005-9-11* time: 15:20:16* «java與模式>> 單例模式背記式單例*/public class regsingleton /靜態(tài)工廠方法,返回指定背記對象的唯一實例;*對于已登記的直接取出返回,對于還未登記的,先登記撚后取出返回* param name* return regsingleton*/public static regsingleton getlnstance(string name) if (name = null) name = ” regsi ngletort;if (m_registry.get(name) = n

9、ull) try m_registry.put(name, (regsingleton) class.forname(name).newlnstance(); catch (instantiationexception e) *登記薄,用來存放所有登記的實例*/private static map<string, regsingleton> m_registry = new hashmapo;在類加載的時候添加一個實例到登記薄static regsingleton x = new regsingleton(); m_registry.put(x.getclass().getname(), x);*受保護的默認構造方法*/protected regsingleton() e.printstacktrace(); catch (hlegalaccessexception e) e.printstacktrace(); catch (classnotfoundexception e) e.printstacktrace();return m_registry.get(name);* 一個示意性的商業(yè)方

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論