Почему аргумент типа подстановочного знака находится за пределами границ в оболочке самоссылающегося типаJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Почему аргумент типа подстановочного знака находится за пределами границ в оболочке самоссылающегося типа

Сообщение Anonymous »

У меня есть интерфейс, содержащий методы, которые возвращают или требуют экземпляры реализующего типа. Для этого я создаю переменную типа U расширяет I, чтобы использовать ее в качестве возвращаемого типа. Разумеется, предполагается, что U является реализующим классом:

Код: Выделить всё

interface SelfReferringInterface {
}
Теперь у меня есть реализующий класс, который содержит несвязанную переменную типа:

Код: Выделить всё

class RestrictingType implements SelfReferringInterface {

}
И класс, который окружает экземпляр SelfReferringInterface:

Код: Выделить всё

class Wrapper {
}
Почему-то я получаю ошибку вывода типа для типов Wrapper, которые принимают подстановочный знак RestrictingType:

Код: Выделить всё

public class Main {

public static void main(String... args) {
// This type checks
SelfReferringInterface test1;
// This too
RestrictingType test2;
// And this
Wrapper test3;
// This fails
Wrapper> test5;
}
}
При компиляции возникает следующая ошибка:

Код: Выделить всё

Main.java:23: error: type argument RestrictingType is not within bounds of type-variable T
Wrapper выходит за пределы T? И почему функционал схож? расширяет RestrictingType, нет проблем? 

Подробнее здесь: [url]https://stackoverflow.com/questions/58400299/why-is-a-wild-card-type-argument-not-within-bounds-in-wrapper-around-a-selfrefer[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»