5

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?

Joseph Weissman
  • 5,697
  • 5
  • 46
  • 75

1 Answers1

17

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

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

should be

if (potentialByteArray instanceof byte[]) {...}
Bala R
  • 107,317
  • 23
  • 199
  • 210