Perché il metodo add () di un elenco collegato restituisce true in Java?

6

Perché il metodo add di una lista collegata restituisce true in Java?

link

Perché non renderlo un metodo vuoto? So che dice "per il contratto generale di Collection.add", ma perché questo contratto / interfaccia non rende add un metodo void?

    
posta David Faux 07.05.2012 - 23:37
fonte

2 risposte

11

Questo per consentire il riferimento alle istanze di LinkedList come elenco o raccolta.

boolean addSomething(Collection c) {
    return c.add(null); // expects collection, with add returning boolean
}


void hackList(LinkedList list) {
    addSomething(list); // list is a Collection, OK to pass
}

LinkedList è Elenco e raccolta.

Per quanto riguarda il motivo per cui una collezione dovrebbe restituire booleano, questo sembra chiaramente spiegato in rispettivi javadoc :

...Ensures that this collection contains the specified element (optional operation). Returns true if this collection changed as a result of the call. (Returns false if this collection does not permit duplicates and already contains the specified element.)...

    
risposta data 07.05.2012 - 23:55
fonte
2

Oltre all'eccellente risposta fornita da gnat, può essere utile sapere che hai appena provato ad aggiungere null a una lista, e quindi non l'hai modificato. Mentre puoi controllare separatamente, è bello poter dire

if (myList.add(foo)) { doSomething(); }

o forse

while (myList.add(buffer.readLine()));
    
risposta data 08.05.2012 - 01:54
fonte

Leggi altre domande sui tag