最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java的靜態(tài)類型檢查示例代碼詳解

 更新時(shí)間:2017年11月20日 11:34:35   投稿:mrr  
本文將使用幾個(gè)代碼示例,深入講解Java中的類型檢查機(jī)制。一旦完全理解了本文的例子,就完全掌握了Java中的靜態(tài)類型檢查,感興趣的朋友一起看看吧

關(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

原因很簡(jiǎn)單,兩個(gè)不存在任何繼承關(guān)系的類(Suber和Brother)不可以做類型轉(zhuǎn)換。

總結(jié)

以上所述是小編給大家介紹的Java的靜態(tài)類型檢查示例代碼詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 詳解Java Callable接口實(shí)現(xiàn)多線程的方式

    詳解Java Callable接口實(shí)現(xiàn)多線程的方式

    這篇文章主要介紹了詳解Java Callable接口實(shí)現(xiàn)多線程的方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • java實(shí)現(xiàn)圖片反色處理示例

    java實(shí)現(xiàn)圖片反色處理示例

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)圖片反色處理示例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Java反射獲取實(shí)例的速度對(duì)比分析

    Java反射獲取實(shí)例的速度對(duì)比分析

    這篇文章主要介紹了Java反射獲取實(shí)例的速度對(duì)比分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • Java獲取字符串編碼格式實(shí)現(xiàn)思路

    Java獲取字符串編碼格式實(shí)現(xiàn)思路

    文件編碼的格式?jīng)Q定了文件可存儲(chǔ)的字符類型,所以得到文件的類型至關(guān)重要,下文筆者講述獲取一個(gè)文本文件的格式信息的方法分享及java字符串編碼格式實(shí)現(xiàn),感興趣的朋友一起看看吧
    2022-09-09
  • Visual?Studio?Code配置Tomcat運(yùn)行Java?Web項(xiàng)目詳細(xì)步驟

    Visual?Studio?Code配置Tomcat運(yùn)行Java?Web項(xiàng)目詳細(xì)步驟

    VS Code是一款非常棒的文本編輯器,具有配置簡(jiǎn)單、功能豐富、輕量簡(jiǎn)潔的特點(diǎn),并且極其適合處理中小規(guī)模的代碼,這篇文章主要給大家介紹了關(guān)于Visual?Studio?Code配置Tomcat運(yùn)行Java?Web項(xiàng)目的詳細(xì)步驟,需要的朋友可以參考下
    2023-11-11
  • java?HttpURLConnection類的disconnect方法與http長(zhǎng)連接詳解

    java?HttpURLConnection類的disconnect方法與http長(zhǎng)連接詳解

    這篇文章主要介紹了java?HttpURLConnection類的disconnect方法與http長(zhǎng)連接,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • java線程封閉之棧封閉和ThreadLocal

    java線程封閉之棧封閉和ThreadLocal

    這篇文章主要介紹了java線程封閉之棧封閉和ThreadLocal,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • JavaBean和SpringBean的區(qū)別及創(chuàng)建SpringBean方式

    JavaBean和SpringBean的區(qū)別及創(chuàng)建SpringBean方式

    這篇文章主要介紹了JavaBean和SpringBean的區(qū)別及創(chuàng)建SpringBean方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java 中Comparable和Comparator區(qū)別比較

    Java 中Comparable和Comparator區(qū)別比較

    本文,先介紹Comparable 和Comparator兩個(gè)接口,以及它們的差異;接著,通過(guò)示例,對(duì)它們的使用方法進(jìn)行說(shuō)明
    2013-09-09
  • Java OpenCV4.0.0實(shí)現(xiàn)實(shí)時(shí)人臉識(shí)別

    Java OpenCV4.0.0實(shí)現(xiàn)實(shí)時(shí)人臉識(shí)別

    這篇文章主要為大家詳細(xì)介紹了Java OpenCV4.0.0實(shí)現(xiàn)實(shí)時(shí)人臉識(shí)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07

最新評(píng)論

泗水县| 荣昌县| 浏阳市| 阳西县| 江川县| 嘉黎县| 绥阳县| 临沂市| 石景山区| 固镇县| 海门市| 贵州省| 涟水县| 安岳县| 迁安市| 塔河县| 襄城县| 万年县| 咸宁市| 鹿泉市| 永济市| 仁寿县| 灵山县| 台北市| 海伦市| 沾化县| 双桥区| 涟源市| 吉安县| 沈阳市| 额敏县| 通州市| 宁波市| 洛宁县| 崇左市| 兴山县| 察哈| 兴城市| 保康县| 汽车| 海阳市|