Как определить, является ли класс, который является реализацией интерфейса в Java - PullRequest
0 голосов
/ 19 мая 2011

Мне нужно написать функцию, которая будет возвращать true, если входящий Java-класс является реализацией интерфейса List. Кто-нибудь знает, как сделать это в Java?

что-то вроде:

public boolean canConvert(Class c) {

  //return true is c is an implementation of the interface List

}

Спасибо

Ответы [ 4 ]

8 голосов
/ 19 мая 2011

Существует два различных сценария:

  • вы хотите проверить, является ли данный класс подклассом / разработчиком List. Судя по подписи вашего метода (Class c), это то, что вы хотите. В этом случае используйте

    List.class.isAssignableFrom(c)
    
  • вы хотите увидеть, является ли данный объект экземпляром класса, который использует подкласс / разработчика List. В этом случае используйте obj instanceof List, как предложил Бала Р.

4 голосов
/ 19 мая 2011

попробуйте использовать оператор instanceof.

return c instanceof List;
2 голосов
/ 19 мая 2011

Если это экземпляр, который вы делаете

c instanceof List

если это класс, то вы делаете

List.class.isAssignableFrom(c)
0 голосов
/ 19 мая 2011

Вызвав эту функцию из Class, которая довольно широко отвечает на вопрос.Если вам нужно конкретно знать, реализует ли он непосредственно, вам придется пройтись по структурам данных.

Более конкретный ответ приходит от поиска результатов getInterfaces .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...