java - java 方法 : isAssignableFrom(Class<? 上的奇怪行为 >)

标签 java

如果您尝试以下代码(我在 Java 6 上尝试过):

System.out.println(Collection.class.isAssignableFrom(Set.class));

它打印出:false但我期望打印出:true因为 javadoc 说:

Determines if the class or interface represented by this Class object is either the same as, or is a superclass or superinterface of, the class or interface represented by the specified Class parameter.

BUT Collection 是 Set 的父类(super class):public interface Set<E> extends Collection<E> .

那么这种奇怪行为的解释是什么?

最佳答案

问题在于您导入了错误的 Collection.class 或错误的 Set.class

请注意,在 Collection 类上使用 isAssignableFrom 方法时存在一些常见的陷阱:我经常注意到人们混淆了参数,因此他们调用 Set .class.isAssignableFrom(Collection.class) 而不是调用 Collection.class.isAssignableFrom(Set.class)

另一个经常引起人们注意的问题与 Map.class 有关,它不是一个集合

希望这有帮助。

关于java - java 方法 : isAssignableFrom(Class<? 上的奇怪行为 >),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21992030/

相关文章:

java - Spring 启动,JPA 错误 : "Error executing DDL via JDBC Statement"

java - java-mySQL 中未创建表

java - 线性 yAxis 上的指数刻度 - JFreeChart

java.lang.IllegalStateException : No thread-bound request found, 方面的异常

java - 如何使用nfc(android studio)获取卡ID

java - 帮助构建正则表达式

java - 我们如何将列表对象从jsp传递到struts2 Action ?

java - 是否有 java.decompiler.free.fr 的替代品?

java - 停止 chalice 不是有效的候选人

java - OnPostExecute 永远不会被调用