Ваш вопрос очень актуален.
Если вы посмотрите на реализацию, вы увидите, что проверка, связанная с типом элемента, не выполняется:
public boolean equals(Object ob) {
if (this == ob)
return true;
if (!(ob instanceof CharBuffer))
return false;
CharBuffer that = (CharBuffer)ob;
if (this.remaining() != that.remaining())
return false;
return BufferMismatch.mismatch(this, this.position(),
that, that.position(),
this.remaining()) < 0;
}
Единственная проверка, которая выполняется в отношении типа, заключается в том, чтообъект в параметре является экземпляром CharBuffer
.
Интересно отметить, что CharBuffer
происходит от Buffer
, но CharBuffer
переопределяет equals()
таким образом, что только экземпляр CharBuffer
может быть равным между ними.
Buffer
реализации, такие как ByteBuffer
или IntBuffer
, поэтому не могут взаимодействовать между ними.
В соответствии с реализацией это, вероятно, означает, что.
Обратите внимание, что другиеРеализации Buffer
имеют сходство по этому вопросу:
Они имеют один и тот же тип элемента