2011-08-30 466 views
3

我期望的是當potentialByteArraybyte[]的實例時,'potentialByteArray instanceof byte[]將返回true,但這似乎不會發生 - 由於某種原因它總是假的!Java instanceof和byte []

我有一個條件,看起來像下面這樣:

if (!(potentialByteArray instanceof byte[])) { /* ... process ... */ } 
else { 
     log.warn("--- can only encode 'byte[]' message data (got {})", msg.getClass().getSimpleName()); 
     /* ... handle error gracefully ... */ 
    } 

...什麼這個輸出是:

--- can only encode 'byte[]' message data (got byte[]) 

這意味着該對象實際上一個byte[]但不是instanceof byte[]莫名其妙。所以...這將工作Byte[]而不是什麼?這裏發生了什麼,爲什麼不按我期望的那樣工作?

這裏用什麼適當的習慣用法呢?

回答

13

它看起來像你有一個!(不),你不需要

if (!(potentialByteArray instanceof byte[])) {...} 

應該

if (potentialByteArray instanceof byte[]) {...} 
+1

呻吟。謝謝 :) –