J'utilise des génériques dans une certaine structure de données. Je dois stocker int x
, int y
, et Value value
, où value
est le type générique.Génériques & Types
Je suis en train de regrouper tous ceux qui dans un objet appelé NodeData
puis dans une autre classe, créer un ArrayList de NodeData
« s, (de sorte que chaque élément de la liste de tableau comprendra tenir un x, y et valeur.
Mon NodeData
est la suivante:
public class NodeData<Value> {
private int x;
private int y;
private Value value;
Dans une autre classe, la liste de tableau instancié comme suit:. ArrayList<NodeData> items = new ArrayList<NodeData>();
Je reçois une erreur pour l'un liste rray qui dit: NodeData is a raw type. References to NodeData<Value> should be parametrized.
Pourquoi est-ce? NodeData
est déjà paramétré comme NodeData<Value>
.
Merci
quand vous faites NodeData on suppose que vous substituerait une classe réelle pour la valeur. La façon dont vous l'avez défini Valeur peut être de n'importe quel type ce qui n'est probablement pas ce que vous voulez. –
MeBigFatGuy
Vous n'obtenez pas d'erreur mais plutôt un avertissement ***, et c'est une grande différence. Ce que vous faites n'est pas sûr, mais peut potentiellement fonctionner si vous en prenez soin. Je vous conseille de suivre le conseil de Duffymo, car c'est ce que les génériques sont pour - permettre la vérification de type de temps de compilation. –