資源描述:
《創(chuàng)建java內(nèi)部類的編譯錯誤處理》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、創(chuàng)建Java內(nèi)部類的編譯錯誤處理 在學(xué)習(xí)編程的過程中,我覺得不止要獲得課本的知識,更多的是通過學(xué)習(xí)技術(shù)知識提高解決問題的能力,這樣我們才能走在最前方,更多Java學(xué)習(xí),請搜索瘋狂Java; 在創(chuàng)建非靜態(tài)內(nèi)部類時,經(jīng)常會遇到“Noenclosinginstanceoftype*isaccessible.Mustqualifytheallocationwithanenclosinginstanceoftype*(e.g.x.newA()wherexisaninstanceof*).”這樣的報(bào)錯,其實(shí)原因只有一點(diǎn),內(nèi)部類是依賴于外
2、部類存在的,所以在使用非靜態(tài)內(nèi)部類時,要求先實(shí)例化外部類才可以使用內(nèi)部類。關(guān)于非靜態(tài)內(nèi)部類,我們可以把它理解成外部類的成員變量,我們在使用一個類的非靜態(tài)成員變量時要求先對類進(jìn)行實(shí)例化,然后通過對象來調(diào)用這個類的非靜態(tài)成員變量。這里非靜態(tài)內(nèi)部類同外部類的關(guān)系,就如同非靜態(tài)成員變量同類的關(guān)系一樣。所以在使用非靜態(tài)內(nèi)部類時,要求先實(shí)例化外部類?! ∠旅嫖医o出例子來分析一下: packagecom.csc.innerclasstest; /** * *@authorcsc * */ //外部類 publicclassOu
3、terClass{ /** *@paramargs */ publicstaticvoidmain(String[]args){ InnerClassinnerClass=newInnerClass(); innerClass.say(); System.out.println("IaminOuterClass!"); } //定義一個內(nèi)部類 privateclassInnerClass{ privatevoidsay(){ System.out.println("IaminInnerClass!");
4、 } } } 上面的代碼的第16行將會報(bào)出“NoenclosinginstanceoftypeOuterClassis accessible.MustqualifytheallocationwithanenclosinginstanceoftypeOuterClass (e.g.x.newA()wherexisaninstanceofOuterClass).”這樣的編譯錯誤。錯誤的原因如上面紅色字體所述?! 〗鉀Q方法一:將非靜態(tài)內(nèi)部類轉(zhuǎn)換成靜態(tài)內(nèi)部類,即在上面程序的第21行的“Private”后面加上“Static”即
5、可?! 〗鉀Q方法二:先實(shí)例化外部類,然后通過外部類來調(diào)用內(nèi)部類的構(gòu)造函數(shù),代碼如下: packagecom.csc.innerclasstest; /** * *@authorcsc * */ //外部類 publicclassOuterClass{ /** *@paramargs */ publicstaticvoidmain(String[]args){ //實(shí)例化外部類 OuterClassouterClass=newOuterClass(); //通過外部類引用內(nèi)部類 InnerClass
6、innerClass=outerClass.newInnerClass(); innerClass.say(); System.out.println("IaminOuterClass!"); } //定義一個內(nèi)部類 privateclassInnerClass{ privatevoidsay(){ System.out.println("IaminInnerClass!"); } } } 上面代碼的16行先進(jìn)行了外部類的實(shí)例化,第18行通過外部類來引用內(nèi)部類,這樣就不會出現(xiàn)“Noenclosinginst
7、anceoftypeOuterClassisaccessible.MustqualifytheallocationwithanenclosinginstanceoftypeOuterClass(e.g.x.newA()wherexisaninstanceofOuterClass”這個編譯報(bào)錯了?! ’偪馢ava培訓(xùn)fkjava的課程采用針對性培養(yǎng),全面提升學(xué)員就業(yè)能力,重點(diǎn)加強(qiáng)訓(xùn)練職業(yè)素質(zhì)。老師辛勤的講解,讓學(xué)員充分感受Java的魅力,充分激發(fā)每個學(xué)員對于編程的熱愛,讓學(xué)員在半年的時間內(nèi)掌握8-10萬的代碼量,成為真正的技術(shù)高手
8、,瘋狂Java采用企業(yè)全真模擬開發(fā)訓(xùn)練,迅速積累項(xiàng)目經(jīng)驗(yàn)。讓學(xué)員迅速獲得其他人需要花費(fèi)兩年才能獲得的工作技能,無憂就業(yè)!