тест для подкласса с getType в условном в Java - PullRequest
3 голосов
/ 19 января 2011

Я должен выяснить, является ли возвращаемый тип метода подклассом определенного базового класса. Пока я не могу найти никакого встроенного способа сделать это, я могу только найти способ проверить на точное соответствие класса. Я также могу сделать это с помощью аннотаций, но идея в том, что мне не нужно добавлять дополнительный код, если мне случится добавить новый подкласс. Я думал о тестировании на всех возможных подклассах или создании нетипизированного объекта и тестировании его экземпляра с использованием «instanceof», но ничто не кажется идеальным. В идеале:

if (m.getReturnType() Extends Superclass.class)

но нет «расширяет» функциональность, аналогичную «instanceof» с реальными экземплярами. Есть ли условный оператор, о котором я не знаю? Заранее благодарю за любые идеи.

Это на самом деле для проекта Android, поэтому я не смогу реализовать все возможности.

1 Ответ

5 голосов
/ 19 января 2011

Я думаю, что вы хотите использовать Class.isAssignableFrom(Class).

При использовании только с обычной Java,

   System.out.println(List.class.isAssignableFrom(LinkedList.class));

Печатает true.Как и:

  System.out.println(Queue.class.isAssignableFrom(LinkedList.class));

Поскольку LinkedList может рассматриваться как список и очередь.Однако

   System.out.println(ArrayList.class.isAssignableFrom(LinkedList.class));

печатает false, поскольку LinkedList не может рассматриваться как ArrayList.

...