2015-05-29 6 views
2

Так что я интерфейс Foo построен как:Реализовать интерфейс, который расширяет сравнимой

public interface Foo<T extends Comparable<? super T>>

, и я пытаюсь выполнить Foo в моем классе бар как:

public class Bar<T> implements Foo<T>

, но я получаю ошибку type argument T#1 is not within bounds of type-variable T#2

но когда я пытаюсь реализовать Foo as:

public class Bar<T> implements Foo<T extends Comparable<? super T>> 

я > expected и <identifier> expected

ответ

3

Ваш синтаксис откусил. Попробуйте перевести границы в декларацию T:

public class Bar<T extends Comparable<? super T>> implements Foo<T> { 
    ... 
} 
+0

О, боже, что это было ?! Вау, я буквально трачу и час, пытаясь это исправить. – Flameancer

+0

... потому что в этом случае 'Bar' _declaring_' 'и просто передается как _parameter_ в' Foo'. Точно так же, как если вы объявляете переменную и передаете ее методу, тип объявления должен удовлетворять границам получателя, чтобы он мог скомпилировать. –

Смежные вопросы