Java instanceof and byte[]

13,247

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

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

should be

if (potentialByteArray instanceof byte[]) {...}
Share:
13,247
Joseph Weissman
Author by

Joseph Weissman

Hi! I'm Joseph. I am a computer programmer (my Github) and thinker/writer (my working group's blog.) I'm one of the friendly neighborhood moderators at Philosophy StackExchange.

Updated on June 09, 2022

Comments

  • Joseph Weissman
    Joseph Weissman almost 2 years

    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?