天天看點

Java基本注解分析,為什麼要使用@Override@Override@Deprecated@SuppressWarnings

标注在子類方法中,表示此方法是覆寫父類的重載方法,具有強制性,即如果父類沒有此方法,則會編譯出錯。那它到底有什麼用呢?讓我們來看這一需求場景:

假如我們利用面向對象的多态特性特性程式設計,有子類sa,sb繼承自父類s.我們需要在子類sa,sb各自拓展父類s的speak方法,然後根據業務邏輯,通過a的引用來調用sa,sb的重載方法speak。示例代碼如下所示:

這裡是我們業務中,想要的結果,但如果我們不小心把咱們的sb類中的speak方法寫錯成了spek,或将傳入參數類型、數量寫錯等(即不能成功重載),如下所示:

但如果我們在sb的speak方法上添加注解@override,則會出現編譯異常如:the method speak(int) of type sb must override or implement a supertype method

從上面我們能夠看到,對子類的重載标注@override是良好的程式設計習慣,否則在大規模的項目中,我們萬一不小心出現這種細節錯誤,可能會為後期排錯帶來巨大障礙。

除了override,還有另外兩種最基本的注解:

它用來标示某個類或其方法、變量等已過期,如果我們在其他類中調用标注了@deprecated的類或方法變量,将會引起編譯器的警告

它用于取消編譯器的警告,标注了此注解的元素會有向下傳遞的效果,比如在類級别标注了注解,則在該類的所有方法中也會取消同類的編譯器警告。