Perché la classe Java Collections non è definitiva?

6
La classe

Collections in Java consiste solo di metodi statici, come dichiarato nelle specifiche

This class consists exclusively of static methods that operate on or return collections. It contains polymorphic algorithms that operate on collections, "wrappers", which return a new collection backed by a specified collection, and a few other odds and ends.

La classe ha un costruttore privato, tuttavia non è contrassegnato come final . Non ci sono benefici di rendimento se la classe sarebbe definitiva in sé? Qual è la ragione di questo?

    
posta vtor 28.09.2016 - 18:36
fonte

2 risposte

7

Aren't there any performance benefits if the class would be final itself?

Per esempio i metodi, potenzialmente. Per i metodi statici, no. Sapendo che un metodo istanza non sovrascritto si trova in una classe final potrebbe potenzialmente consentire il collegamento statico del metodo quando viene chiamato, piuttosto che passare attraverso la distribuzione virtuale, ma i metodi% em_de% sono già associato staticamente . Non importa se la classe che definisce il metodo static è static o no, la chiamata deve essere associata staticamente per tutti i metodi final .

    
risposta data 28.09.2016 - 18:46
fonte
0

Il costruttore di Collections è privato quindi non c'è modo di estenderlo. E come notato nella risposta di Servy, questi metodi non sono polimorfici quindi se è definitivo non è rilevante per le prestazioni. Marcare la finale non ha alcun impatto quindi aggiungere che è superfluo. Se è stato lasciato per quel motivo o semplicemente non considerato non è chiaro.

    
risposta data 18.10.2016 - 21:50
fonte

Leggi altre domande sui tag