Je suis en train de suivre un cours sur les structures de données, et nous utilisons les structures de données et l'analyse algorithmique dans Java 2nd Edition de Mark Weiss. Dans son implémentation BinaryHeap, son constructeur crée un tableau Comparable [] qui est casté en AnyType []. Avez-vous une idée de la raison pour laquelle il fait cela au lieu de simplement créer un nouveau AnyType []? Je comprends la structure du BinaryHeap, mais je veux être à jour sur les génériques. La déclaration de classe est assez simple, assurez-vous que AnyType étend un type comparable à AnyType ou tout superclasse hiérarchie d'héritage de AnyType (dans le cas où AnyType est une sous-classe d'un type et n'a pas besoin de changer sa méthode compareTo pour fonctionner).Structures de données (livre Weiss Java): Pourquoi allouer Comparable [] dans le tableau BinaryHeap <T> au lieu de T []?
Cependant, la ligne, array = (AnyType[]) new Comparable[ capacity + 1 ];
, n'a aucun sens pour moi. AnyType n'est-il pas déjà comparable? Quelles sont les ramifications pour écrire simplement array = new AnyType[ capacity + 1 ];
?
La source complète de classe se trouvent on his site, mais voici les parties qui me préoccupent:
public class BinaryHeap<AnyType extends Comparable<? super AnyType>>
{
private int currentSize; // Number of elements in heap
private AnyType [ ] array; // The heap array
/**
* Construct the binary heap.
* @param capacity the capacity of the binary heap.
*/
public BinaryHeap(int capacity)
{
currentSize = 0;
array = (AnyType[]) new Comparable[ capacity + 1 ];
}