2015-03-20 1 views
1

par <Item> qu'il dit: -Comment réparer cette erreur d'incompatibilité liée?

Bound mismatch: The type Item is not a valid substitute for the bounded parameter <T extends 
Comparable<? super T>> of the type ExpandableArrayList<T> 

ExpandableArrayList<Item> items = new ExpandableArrayList<Item>(); 

Ce sont mes têtes:

public interface ListInterface <T extends Comparable <? super T>> 
public class ExpandableArrayList<T extends Comparable<?super T>> extends Item { 
public class Item implements Comparable 

Je ne peux pas comprendre ce que je dois changer exactement. Chaque fois que je change quelque chose dans un en-tête, d'autres erreurs apparaissent. J'utilise le type compareTo (Object obj).

+0

Et ce qui pourrait être une classe ExpandableArrayList? Pourriez-vous fournir plus de code s'il vous plaît? –

Répondre

2

Votre classe Item met en œuvre la forme brute de l'interface Comparable. Vous devez le faire implémenter le formulaire générique, en déclarant un paramètre de type sur Item lui-même. Ensuite, ExpandableArrayList peut mettre en œuvre la forme générique de Item.

public class Item<T extends Comparable <? super T>> implements Comparable<T> 

et

public ExpandableArrayList<T extends Comparable<?super T>> extends Item<T> 

Cela permettra de résoudre les problèmes de compilation en raison des en-têtes.

Mais il n'est pas clair pourquoi un ExpandableArrayList devrait sous-classe Item. Il devrait contenir Item s; cela échoue au test "is-a". ExpandableArrayList ne devrait pas étendre Item du tout.