Java中instanceof注意的地方


  • instanceof只能用於對象的判斷,不能用於基本類型的判斷,以下代碼會編譯不通過
'A' instanceof Character
  • instanceof特有的規則:若左操作數是null,結果就直接返回false,不再運算右操作數是什么類
null instanceof String
  • instanceof操作符的左右操作數必須有繼承或實現關系,否則編譯會失敗,以下代碼編譯不通過
new Data() instanceof String
  • 注意泛型的情況
    class GenericClass<T>{
        public boolean isDataInstance(T t){
            return t instanceof Date;
        }
    }

    boolean a = new GenericClass<String>().isDataInstance("test");//false
    //T是個String類型,與Date之間沒有繼承或實現關系,為什么''t instanceof Date''會編譯通過呢?那是因為Java的泛型是為編碼服務的,在編譯成字節碼時,T已經是Object類型了,傳遞的實參是String類型,也就是說T的表面類型是Object,實際類型是String,那''t instanceof Date''這句話就等價於''Object instance ofDate''了,所以返回false就很正常了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM