当前位置: 首页 > 面试题库 >

检查类对象是否是Java中另一个类对象的子类

太叔高义
2023-03-14
问题内容

我正在玩Java的反射API,并尝试处理一些字段。现在,我要确定字段的类型。字符串很简单,只需执行即可myField.getType().equals(String.class)。其他非派生类也是如此。但是,如何检查派生类?例如LinkedList作为的子类List。我无法找到任何isSubclassOf(...)extends(...)方法。我是否需要遍历所有人getSuperClass()并自己找到超人?


问题答案:

您需要此方法:

boolean isList = List.class.isAssignableFrom(myClass);

一般情况下,List(以上)应替换为superclassmyClass应替换为subclass

从JavaDoc:

确定此Class对象表示的类或接口是否与指定Class参数表示的类或接口相同或超类或超接口。true如果是,则返回;否则返回。否则返回false。如果此Class对象表示原始类型,true则如果指定的Class参数正是该Class对象,则此方法返回;否则,此方法返回。否则返回false

参考:

  • Class.isAssignableFrom(Class)

有关:

a)检查对象是否是您在编译时知道的类或接口(包括子类)的实例:

boolean isInstance = someObject instanceof SomeTypeOrInterface;

例:

assertTrue(Arrays.asList("a", "b", "c") instanceof List<?>);

b)检查对象是否是您仅在运行时知道的类或接口(包括子类)的实例:

Class<?> typeOrInterface = // acquire class somehow
boolean isInstance = typeOrInterface.isInstance(someObject);

例:

public boolean checkForType(Object candidate, Class<?> type){
    return type.isInstance(candidate);
}


 类似资料:
  • 问题内容: 有没有一种简单的方法来验证对象属于给定的类?例如,我可以 但这需要每次在运行中实例化一个新对象,而只是将其丢弃。有没有更好的方法来检查“ a”是否属于类“ MyClass”? 问题答案: 如其他答案所述,关键字通常是您想要的。请记住,超类也会返回。 如果要查看对象是否是类的直接实例,则可以比较该类。您可以通过获取实例的类对象。您可以通过静态访问特定的类。 因此,例如: 在上面的例子中,

  • 对于此示例: 如何检查 是否是 Foo 的实例(但不是其 foo 子类的实例)?那是: checkInstance(qux,Foo.class)=true checkInstance(qux,Bar.class)=false 有没有类似于< code>instanceof的语句来进行这种检查?或者我应该使用< code>qux.getClass()。equals(Foo.class)

  • 有没有简单的方法来验证对象是否属于给定的类?例如,我可以这样做 但是这需要每次动态实例化一个新对象,只是丢弃它。有更好的方法来检查“a”属于“MyClass”类吗?

  • 问题内容: 通过使用Java反射,我们可以轻松知道对象是否为数组。判断对象是否为集合(Set,List,Map,Vector …)的最简单方法是什么? 问题答案:

  • 对于这个示例: null 是否有类似这样的语句用于此检查?或者我应该使用

  • 问题内容: 有没有一种快速的方法来检查对象是jQuery对象还是本机JavaScript对象? 例: 显然,上面的代码有效,但并不安全。您可能会向对象添加选择器键并获得相同的结果。有没有更好的方法来确保该对象实际上是jQuery对象? 符合 问题答案: 您可以使用运算符: 说明 :该函数(又名)被实现为构造函数。构造函数将以前缀调用。 调用时,内部jQuery将此转换为1。JavaScript继续