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

时间:2011-01-19 17:01:49

标签: java android conditional

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

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

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

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

1 个答案:

答案 0 :(得分:5)

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

使用常规Java时,

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

打印true。同样如下:

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

因为LinkedList可以同时被视为List和Queue。然而,

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

打印false,因为LinkedList 不能被视为ArrayList。