java方法上的奇怪行为:isAssignableFrom(类<;?>;)
如果您尝试以下代码(我已经在Java 6上尝试过): 它打印出来:java方法上的奇怪行为:isAssignableFrom(类<;?>;),java,Java,如果您尝试以下代码(我已经在Java 6上尝试过): 它打印出来:false,但我希望打印出来:true,因为javadoc说: 确定此类对象表示的类或接口是否与指定的类参数表示的类或接口相同,或者是该类或接口的超类或超接口。 但是集合是集合的超类:公共接口集合扩展集合 那么,对这种奇怪行为的解释是什么呢 问题在于,您要么导入了错误的集合.class,要么导入了错误的集合.class 请注意,在Collection类上使用isAssignableFrom方法时,有一些常见的陷阱:我经常注意到人们
false
,但我希望打印出来:true
,因为javadoc说:
确定此类对象表示的类或接口是否与指定的类参数表示的类或接口相同,或者是该类或接口的超类或超接口。
但是集合是集合的超类:公共接口集合扩展集合
那么,对这种奇怪行为的解释是什么呢 问题在于,您要么导入了错误的
集合.class
,要么导入了错误的集合.class
请注意,在Collection
类上使用isAssignableFrom
方法时,有一些常见的陷阱:我经常注意到人们混淆了参数,因此他们调用Set.class.isAssignableFrom(Collection.class)
而不是调用Collection.class.isAssignableFrom(Set.class)
另一个经常引起人们注意的问题是Map.class
,它不是aCollection
希望这能有所帮助。问题在于您要么导入了错误的集合.class
,要么导入了错误的集合.class
请注意,在Collection
类上使用isAssignableFrom
方法时,有一些常见的陷阱:我经常注意到人们混淆了参数,因此他们调用Set.class.isAssignableFrom(Collection.class)
而不是调用Collection.class.isAssignableFrom(Set.class)
另一个经常引起人们注意的问题是Map.class
,它不是aCollection
希望这能有所帮助。问题在于您要么导入了错误的集合.class
,要么导入了错误的集合.class
请注意,在Collection
类上使用isAssignableFrom
方法时,有一些常见的陷阱:我经常注意到人们混淆了参数,因此他们调用Set.class.isAssignableFrom(Collection.class)
而不是调用Collection.class.isAssignableFrom(Set.class)
另一个经常引起人们注意的问题是Map.class
,它不是aCollection
希望这能有所帮助。问题在于您要么导入了错误的集合.class
,要么导入了错误的集合.class
请注意,在Collection
类上使用isAssignableFrom
方法时,有一些常见的陷阱:我经常注意到人们混淆了参数,因此他们调用Set.class.isAssignableFrom(Collection.class)
而不是调用Collection.class.isAssignableFrom(Set.class)
另一个经常引起人们注意的问题是Map.class
,它不是aCollection
希望这有帮助。您导入的集合类型错误。它应该是java.util.Collection
。或者Java6是一团糟。它在7点工作。或者下面@Marco13所说的。或者错误的Set
类型。它应该是java.util.Set
:-)你是对的,导入让我今天过得很愉快:)…它为我返回true,因此请检查导入的类是否正确。导入的集合类型错误。它应该是java.util.Collection
。或者Java6是一团糟。它在7点工作。或者下面@Marco13所说的。或者错误的Set
类型。它应该是java.util.Set
:-)你是对的,导入让我今天过得很愉快:)…它为我返回true,因此请检查导入的类是否正确。导入的集合类型错误。它应该是java.util.Collection
。或者Java6是一团糟。它在7点工作。或者下面@Marco13所说的。或者错误的Set
类型。它应该是java.util.Set
:-)你是对的,导入让我今天过得很愉快:)…它为我返回true,因此请检查导入的类是否正确。导入的集合类型错误。它应该是java.util.Collection
。或者Java6是一团糟。它在7点工作。或者下面@Marco13所说的。或者错误的Set
类型。它应该是java.util.Set
:-)你是对的,导入让我今天很开心:)…它对我来说是真的,所以请检查你是否导入了正确的类。我很感激你花时间添加了常见的陷阱部分,我必须承认这对我来说是一个陷阱(当我第一次开始使用反射时)。我感谢你花时间添加常见陷阱部分,我必须承认这对我来说是一个陷阱(当我第一次开始使用反射时)。我感谢你花时间添加常见陷阱部分,我必须承认这对我来说是一个陷阱(当我第一次开始使用反射时)。我很感激您花时间添加了常见陷阱部分,我必须承认这对我来说是一个陷阱(当我第一次开始使用反射时)。
System.out.println(Collection.class.isAssignableFrom(Set.class));