2011-08-30 469 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

呻吟。谢谢 :) –