我必须找出方法返回类型是否是某个基类的子类。到目前为止,我找不到内置的方法来执行此操作,我只能找到一种方法来测试精确的类匹配。我也可以使用注释来做到这一点,但我的想法是,如果我碰巧添加了一个新的子类,我不想添加额外的代码。我考虑过针对所有可能的子类进行测试,或者创建一个无类型对象并使用“instanceof”测试它的实例,但似乎没有什么是理想的。理想情况下:
if (m.getReturnType() Extends Superclass.class)
但是没有“扩展”功能类似于实际实例的“instanceof”。是否有我不知道的条件运算符?提前感谢您的任何想法。
这实际上是一个 android 项目,所以我可能无法实现所有可能性。
最佳答案
我想你想使用 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 一样对待。
关于java - 在java中有条件地使用getType测试子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4738243/