java - 在java中有条件地使用getType测试子类

标签 java android conditional

我必须找出方法返回类型是否是某个基类的子类。到目前为止,我找不到内置的方法来执行此操作,我只能找到一种方法来测试精确的类匹配。我也可以使用注释来做到这一点,但我的想法是,如果我碰巧添加了一个新的子类,我不想添加额外的代码。我考虑过针对所有可能的子类进行测试,或者创建一个无类型对象并使用“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/

相关文章:

vb.net - 有条件地检查 GetType() 容器中的值类型

java - Lucene 5.2.1 中的过滤问题

java - 自定义 ArrayList 序列化

android - 当 minsdk 高于 3 时,ICS 绘制按比例放大的位图

java - 如何为类外的自定义对话框设置onDismiss/CancelListener?

ruby-on-rails - 如何在 Paperclip 中制作条件样式?

java - 使用 Apache Shiro 保护 Rest 服务资源

java - RestEasy JAX-RS ApplicationPath 返回 404

java - 捕获 false containsValue(Hashmap)

python - python 脚本是由 mpirun 还是 mpiexec 启动的?