JMX MBean: Coverity выдает предупреждение NPE при попытке создать элемент XML - PullRequest
0 голосов
/ 12 июля 2020
• 1000 Теперь, если я проверю реализацию этого createElement (), есть класс разработчика NodeImpl. java, в котором есть этот метод, который используется для создания объекта Element для возврата к методу вызывающего объекта:
private static Node getCachedImpl(long peer) {
    if (peer == 0)
        return null;
    int hash = hashPeer(peer);
    SelfDisposer head = hashTable[hash];
    SelfDisposer prev = null;
    for (SelfDisposer disposer = head; disposer != null;) {
        SelfDisposer next = disposer.next;
        if (disposer.peer == peer) {
            NodeImpl node = (NodeImpl) disposer.get();
            if (node != null) {
                // the peer need to be deref'ed!
                NodeImpl.dispose(peer);
                return node;
            }
            if (prev != null)
                prev.next = next;
            else
                hashTable[hash] = next;
            break;
        }
        prev = disposer;
        disposer = next;
    }
    NodeImpl node = (NodeImpl)createInterface(peer);
    SelfDisposer disposer = new SelfDisposer(node, peer);
    Disposer.addRecord(disposer);
    disposer.next = head;
    hashTable[hash] = disposer;
    if (3 * hashCount >= 2 * hashTable.length)
        rehash();
    hashCount++;
    return node;
}

Я пытаюсь понять, в какой ситуации этот метод может вернуть значение null. Я не хочу ставить нулевые проверки, если они не нужны, так как это выглядит некрасиво, и мы часто вызываем метод document.createElement ().

Но я не могу понять этот logi c peer == 0. Это единственный возможный случай, когда этот метод может возвращать null. Может ли кто-нибудь помочь мне понять, что если для вызова document.createElement () передается действительная строка, может ли она вернуть null? и какова будет эта ситуация.

...