Как указать, что аргумент метода должен иметь определенный интерфейс

#java #methods #interface #arguments

Вопрос:

В java, как указать, что аргумент метода должен иметь определенный интерфейс или множество специфических интерфейсов.

Заранее спасибо.

Комментарии:

1. Для конкретного аргумента можно указать только один супертип. Если вы не можете этого сделать, вам придется добавлять перегрузки метода для каждой возможности.

Ответ №1:

https://docs.oracle.com/javase/tutorial/java/generics/boundedTypeParams.html
<T extends B1 amp; B2 amp; B3> Переменная типа с несколькими границами является подтипом всех типов, перечисленных в привязке. Если одна из границ является классом, она должна быть указана первой. Например:

`класс А { /* … */ }

интерфейс B { /* … */ }

интерфейс C { /* … */ }

класс D <T расширяет A amp; B amp; C> { /* … */ }`

Если привязка A не указана первой, вы получите ошибку во время компиляции:

class D <T extends B amp; A amp; C> { /* ... */ } // ошибка во время компиляции

и в вашем методе

`публичный строковый процесс(<T расширяет A amp; B amp; C> yourTypeVariable){ //TODO}