Java instanceof и byte [] - PullRequest
       33

Java instanceof и byte []

4 голосов
/ 30 августа 2011

Я ожидал бы, что 'potentialByteArray instanceof byte[] вернет истину, когда potentialByteArray является экземпляром 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[])

Что означаетобъект на самом деле был a byte[], но каким-то образом не был instanceof byte[].Так ... это сработает вместо Byte[] или как-то так?Что на самом деле здесь происходит, и почему это не работает так, как я ожидаю?

Какую подходящую идиому использовать здесь вместо этого?

1 Ответ

13 голосов
/ 30 августа 2011

Похоже, у вас есть ! (не), который вам не нужен

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

должно быть

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