成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Java中怎么檢查靜態(tài)類型-創(chuàng)新互聯(lián)

Java中怎么檢查靜態(tài)類型,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

目前創(chuàng)新互聯(lián)公司已為上1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、東坡網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

關(guān)于靜態(tài)類型檢查和動(dòng)態(tài)類型檢查的解釋:

靜態(tài)類型檢查:基于程序的源代碼來(lái)驗(yàn)證類型安全的過(guò)程;

動(dòng)態(tài)類型檢查:在程序運(yùn)行期間驗(yàn)證類型安全的過(guò)程;

Java使用靜態(tài)類型檢查在編譯期間分析程序,確保沒(méi)有類型錯(cuò)誤?;镜乃枷胧遣灰岊愋湾e(cuò)誤在運(yùn)行期間發(fā)生。

在各色各樣的編程語(yǔ)言中,總共存在著兩個(gè)類型檢查機(jī)制:靜態(tài)類型檢查和動(dòng)態(tài)類型檢查。

靜態(tài)類型檢查是指通過(guò)對(duì)應(yīng)用程序的源碼進(jìn)行分析,在編譯期間就保證程序的類型安全。

動(dòng)態(tài)類型檢查是在程序的運(yùn)行過(guò)程中,驗(yàn)證程序的類型安全。在Java中,編譯期間使用靜態(tài)類型檢查機(jī)制分析Java源代碼,可以提前發(fā)現(xiàn)Java中類型缺少的錯(cuò)誤。這個(gè)機(jī)制的好處是,不讓錯(cuò)誤的事情在運(yùn)行時(shí)才被發(fā)現(xiàn)。本文,將使用幾個(gè)代碼示例,深入講解Java中的類型檢查機(jī)制。一旦完全理解了本文的例子,就完全掌握了Java中的靜態(tài)類型檢查。

深入分析Java的靜態(tài)類型檢查

代碼示例

假設(shè)我們有如下的兩個(gè)類,類Super 和 類Suber,而且他們具有如下繼承關(guān)系:

class Super {
Super me() {
return this;
}
public void doSuper() {
System.out.println("www.tiantianbianma.com");
}
}
class Suber extends Super {
public void doSuber() {
System.out.println("天天編碼");
}
}

首先,思考這個(gè)問(wèn)題:”new Suber().me()” 的返回值是什么? 是一個(gè) Super對(duì)象 還是一個(gè) Suber對(duì)象?

這個(gè) me() 方法被聲明為返回一個(gè) Super對(duì)象,所以,在編譯期間,編譯期認(rèn)為它返回的是一個(gè) Super對(duì)象。但是,在運(yùn)行期間,該語(yǔ)句實(shí)際返回的是一個(gè) Suber對(duì)象,因?yàn)?Suber繼承了Super的me()方法,并返回了自身對(duì)象(多態(tài)性)。

靜態(tài)檢查

我們來(lái)看看常見(jiàn)的錯(cuò)誤示例代碼:

// 錯(cuò)誤
new Suber().me().doSuber();

這個(gè)語(yǔ)句在編譯時(shí)會(huì)報(bào)錯(cuò),雖然 “new Suber().me()” 返回的結(jié)果,本質(zhì)上是一個(gè) Suber對(duì)象,Suber對(duì)象確實(shí)也具有 doSuber() 方法。但是,在編譯器看來(lái),”new Suber().me()” 返回結(jié)果的引用類型是 Super,自然不能在Super類型的引用上調(diào)用該類型沒(méi)有定義的 doSuber() 方法。所以,我們可以改成如下的正確形式:

// 正確
new Suber().me().doSuper();

另外,既然 “new Suber().me()” 返回的結(jié)果確實(shí)是一個(gè) Suber對(duì)象,如果想調(diào)用其特有的方法,我們可以使用強(qiáng)制類型轉(zhuǎn)換來(lái)完成功能:

// 正確
((Suber) new Suber().me()).doSuber();

深入擴(kuò)展

現(xiàn)在,假設(shè)我們?cè)黾恿艘粋€(gè)如下所示的類:Brother

class Brother extends Super{
public void doBad() {
System.out.println("好好學(xué)習(xí)");
}
}

那么,大家思考一下如下的語(yǔ)句:

// 正確
((Brother) new Suber().me()).beBad();

這個(gè)語(yǔ)句真的是正確的嗎?實(shí)際上,該語(yǔ)句確實(shí)可以通過(guò)靜態(tài)類型檢查和正確編譯。畢竟,編譯器不知道 “new Suber().me()” 的實(shí)際類型。但是,該語(yǔ)句在運(yùn)行時(shí)出拋出如下的錯(cuò)誤:

java.lang.ClassCastException: Suber cannot be cast to Brother

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。

當(dāng)前題目:Java中怎么檢查靜態(tài)類型-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:http://jinyejixie.com/article20/csddco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站內(nèi)鏈、定制網(wǎng)站、域名注冊(cè)、網(wǎng)站改版外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
紫云| 黔江区| 涟水县| 德江县| 临猗县| 宁都县| 瑞昌市| 安福县| 扎兰屯市| 汝州市| 汨罗市| 宜黄县| 桦甸市| 崇礼县| 会泽县| 永州市| 房山区| 惠东县| 满洲里市| 甘泉县| 鸡西市| 封开县| 阳原县| 金寨县| 修文县| 治多县| 高碑店市| 淄博市| 东兰县| 康定县| 皮山县| 堆龙德庆县| 桐柏县| 璧山县| 岑溪市| 大悟县| 牙克石市| 庄河市| 革吉县| 揭东县| 宝清县|