Как я могу исправить эту ошибку несоответствия?

1

by <Item> он говорит: -

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> ();

Это мои заголовки:

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

Я не могу понять, что мне нужно точно изменить. Каждый раз, когда я что-то меняю в одном заголовке, появляются другие ошибки. Я использую тип compareTo (Object obj).

  • 0
    А что может быть классом ExpandableArrayList? Не могли бы вы предоставить больше кода, пожалуйста?
Теги:
generics
casting
header
compareto

1 ответ

2

Класс Item реализует необработанную форму интерфейса Comparable. Вам нужно, чтобы он реализовал общую форму, объявив параметр типа для самого Item. Затем ExpandableArrayList может реализовать общую форму Item.

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

а также

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

Это устранит проблемы компиляции из-за заголовков.

Но непонятно, почему ExpandableArrayList должен подклассировать Item. Он должен содержать Item s; это не проходит тест "is-a". ExpandableArrayList не должен распространять Item вообще.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню