如果您尝试以下代码(我在 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/