- 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就很正常了