我正在玩Java的反射API,并尝试处理一些字段。现在,我要确定字段的类型。字符串很简单,只需执行即可myField.getType().equals(String.class)
。其他非派生类也是如此。但是,如何检查派生类?例如LinkedList
作为的子类List
。我无法找到任何isSubclassOf(...)
或extends(...)
方法。我是否需要遍历所有人getSuperClass()
并自己找到超人?
您需要此方法:
boolean isList = List.class.isAssignableFrom(myClass);
一般情况下,List
(以上)应替换为superclass
并myClass
应替换为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继续