Java instanceof and byte[]

5
我所期望的是当 potentialByteArray 是一个 byte[] 类型实例时 'potentialByteArray instanceof byte[]' 返回 true,但是这似乎并没有发生 -- 出于某些原因它总是返回 false!
我的条件语句如下:
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[]代替会起作用吗?这到底是怎么回事,为什么它不能按照我期望的工作?
在这里使用什么习语比较合适?
1个回答

17

看起来你有一个不必要的!(非)

if (!(potentialByteArray instanceof byte[])) {...}
应该是这样的。
if (potentialByteArray instanceof byte[]) {...}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接