Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java instanceof and byte[]

What I would expect is that 'potentialByteArray instanceof byte[] would return true when potentialByteArray is an instance of a byte[], but this doesn't seem to happen -- it's always false for some reason!

I've got a conditional that looks like the following:

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

...and what this outputs is the following:

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

Which means that the object actually was a byte[] but wasn't an instanceof byte[] somehow. So... would this work for Byte[] instead or something? What's really going on here, and why isn't this working as I am expecting?

What's an appropriate idiom to use here instead?

like image 349
Joseph Weissman Avatar asked Aug 30 '11 17:08

Joseph Weissman


1 Answers

It looks like you have a ! (not) that you don't need

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

should be

if (potentialByteArray instanceof byte[]) {...}
like image 69
Bala R Avatar answered Oct 22 '22 11:10

Bala R