91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中怎么檢查靜態類型

發布時間:2021-06-23 17:08:37 來源:億速云 閱讀:237 作者:Leah 欄目:編程語言

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

關于靜態類型檢查和動態類型檢查的解釋:

靜態類型檢查:基于程序的源代碼來驗證類型安全的過程;

動態類型檢查:在程序運行期間驗證類型安全的過程;

Java使用靜態類型檢查在編譯期間分析程序,確保沒有類型錯誤。基本的思想是不要讓類型錯誤在運行期間發生。

在各色各樣的編程語言中,總共存在著兩個類型檢查機制:靜態類型檢查和動態類型檢查。

靜態類型檢查是指通過對應用程序的源碼進行分析,在編譯期間就保證程序的類型安全。

動態類型檢查是在程序的運行過程中,驗證程序的類型安全。在Java中,編譯期間使用靜態類型檢查機制分析Java源代碼,可以提前發現Java中類型缺少的錯誤。這個機制的好處是,不讓錯誤的事情在運行時才被發現。本文,將使用幾個代碼示例,深入講解Java中的類型檢查機制。一旦完全理解了本文的例子,就完全掌握了Java中的靜態類型檢查。

深入分析Java的靜態類型檢查

代碼示例

假設我們有如下的兩個類,類Super 和 類Suber,而且他們具有如下繼承關系:

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("天天編碼");
}
}

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

這個 me() 方法被聲明為返回一個 Super對象,所以,在編譯期間,編譯期認為它返回的是一個 Super對象。但是,在運行期間,該語句實際返回的是一個 Suber對象,因為 Suber繼承了Super的me()方法,并返回了自身對象(多態性)。

靜態檢查

我們來看看常見的錯誤示例代碼:

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

這個語句在編譯時會報錯,雖然 “new Suber().me()” 返回的結果,本質上是一個 Suber對象,Suber對象確實也具有 doSuber() 方法。但是,在編譯器看來,”new Suber().me()” 返回結果的引用類型是 Super,自然不能在Super類型的引用上調用該類型沒有定義的 doSuber() 方法。所以,我們可以改成如下的正確形式:

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

另外,既然 “new Suber().me()” 返回的結果確實是一個 Suber對象,如果想調用其特有的方法,我們可以使用強制類型轉換來完成功能:

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

深入擴展

現在,假設我們增加了一個如下所示的類:Brother

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

那么,大家思考一下如下的語句:

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

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

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

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鄯善县| 宿迁市| 遂溪县| 磴口县| 怀化市| 连平县| 龙泉市| 新昌县| 河北区| 新津县| 招远市| 子洲县| 古蔺县| 环江| 嵊州市| 元谋县| 利川市| 岳普湖县| 巩义市| 凤山县| 新和县| 陵川县| 含山县| 崇左市| 郯城县| 平舆县| 上蔡县| 惠水县| 改则县| 凤庆县| 周口市| 余江县| 兴安县| 都江堰市| 宁阳县| 靖江市| 西安市| 荥阳市| 临江市| 荔波县| 竹北市|