Параметр проверки типа является (под) классом и также реализует интерфейс

1

Этот ответ, несомненно, существует на SO, но я не нашел правильной комбинации поисковых терминов, чтобы придумать это.

У меня есть метод, который я хочу взять с параметром класса A, но также реализует интерфейс B. Как мне это сделать?

например

public class MySubclassWithInterface extends MyClass implements MyInterface { }

public class MySubclass extends MyClass { }

public class MyInterfaceClass implements MyInterface { }

public class MyOtherSubclassWithInterface extends MyClass implements MyInterface { }

Из трех классов выше я хочу, чтобы мой метод принимал объект MyClass и реализовал MyInterface, другими словами, либо MySubclassWithInterface либо MyOthersubclassWithInterface но не MySubclass или MyIntefaceClass

Я очень застенчиво пробовал следующее, что явно не получилось:

public void myMethod( (MyClass MyInterface) parameterName) {
...
}

Заранее благодарны за Вашу помощь.

Теги:

1 ответ

2
Лучший ответ

Вы можете выразить это с помощью типового типа, как в следующей подписи:

<T extends MyClass & MyInterface> void m(T p)

Правило состоит в том, что первый тип должен быть классом или интерфейсом, и любой следующий параметр должен быть типом интерфейса.

Ещё вопросы

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