型別資訊(Type Info)
阿新 • • 發佈:2018-12-26
1.2 泛化的Class引用:
Integer Class物件不是Number Class物件的子類。例如如下程式碼是錯誤的。
Class<Number> genericNumberClass = int.class;
為了建立一個Class引用,它被限定為某種型別,或該型別的任何子型別,需要將萬用字元?與extends關鍵字相結合,建立一個範圍。
例項:BoundedClassReferences.java
package net.pmpa.typeinfo; public class BoundedClassReferences { public static void main(String[] args) { Class<? extends Number> bounded = int.class; bounded = double.class; bounded = Number.class; // Or anything else derived from Number. } }
向Class新增泛型語法的原因僅僅是為了提供編譯期型別檢查。
1.3 型別轉化前先做檢查:
關鍵字instanceof,返回一個布林值,告訴我們物件是不是特定型別的例項。進行向下轉型前,如果沒有其他資訊可以告訴你這個物件是什麼型別,那麼使用instanceof是非常重要的,否則就會得到一個ClassCastException異常。