在java中用条件测试getType的子类

Jon*_* S. 3 java conditional android

我必须找出方法返回类型是否是某个基类的子类.到目前为止,我找不到内置的方法来做到这一点,我只能找到一种方法来测试一个完全的类匹配.我也可以使用注释来做到这一点,但我的想法是,如果我碰巧添加一个新的子类,我不想添加额外的代码.我想过对所有可能的子类进行测试,或者创建一个无类型的对象并使用"instanceof"测试它的实例,但似乎没有什么是理想的.理想的情况是:

if (m.getReturnType() Extends Superclass.class)
Run Code Online (Sandbox Code Playgroud)

但是没有"扩展"功能类似于"instanceof"与实际实例.是否有一个我不知道的条件运算符?提前感谢您的任何想法.

这实际上是一个Android项目,所以我可能无法实现所有可能性.

Zac*_*h L 5

我想你想用Class.isAssignableFrom(Class).

使用普通Java时,

   System.out.println(List.class.isAssignableFrom(LinkedList.class));
Run Code Online (Sandbox Code Playgroud)

打印出来true.同样如下:

  System.out.println(Queue.class.isAssignableFrom(LinkedList.class));
Run Code Online (Sandbox Code Playgroud)

因为LinkedList可以被视为List和Queue.然而,

   System.out.println(ArrayList.class.isAssignableFrom(LinkedList.class));
Run Code Online (Sandbox Code Playgroud)

打印false,因为LinkedList 不能像ArrayList那样对待.