更新時間:2022-04-12 10:29:00 來源:動力節點 瀏覽15756次
在Java這種強類型語言中,經常會遇到類型轉換、類型判斷。今天動力節點小編就來盤點一下Java中判斷類型的方式。
instanceof是一個Java運算符,用來判斷一個對象是否是一個類的實例。用法 :
boolean isInstance = obj instanceof Class
其中 obj 對于對象實例,Class 對于類名或者接口名,當 obj 通過 Class Example,或者其子類實例,或者其接口的實現類實例,全部返回 true,否則返回false。
需要注意的是,obj 必須是引用類型,不能是基本類型,下面的公式不能編譯:
int integer = 0;
// Error will be reported at compile time
boolean isInstance = integer instanceof Number
另外,編譯器會檢查instanceof表達式 obj 中是否可以轉換為右邊的Class類型,如果不能轉換直接報錯,如果不能確定類型,也會編譯。
// Class.isInstance Equivalent to instanceof The operator
boolean ret = entity instanceof UserInfo;
boolean isInstance = UserInfo.class.isInstance(entity);
如上圖Class.isInstance 等價于instanceof 運算符。如果參數不是null, 并且不觸發也可以,ClassCastException如果成功轉換為左邊的引用類型,就會返回true。
該方法的調用者和參數是Class對象,調用者是父類,參數是自身或其子類。
boolean assignableFrom = List.class.isAssignableFrom(ArrayList.class);
常用于判斷父子關系,Mybatis 插件教程中使用這個方法來判斷一個類是否是接口的實現類。
該方法主要用于判斷Class是否為原始類型(boolean、char、byte、short、int、long、float、double)。
//true
boolean primitive = int.class.isPrimitive();
請注意,基類型的包裝器類型。如果使用此方法確定結果,則返回 false。
這類判斷除前兩種外都很常見,后兩種機會有限。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習