当我调用 Set.class.isAssignableFrom(Iterable.class)
时,它返回 false
。
尽管如此,in the docs , java.util.Set
被列为 java.lang.Iterable
的子接口(interface)。因此我的困惑。您甚至可以在一行代码中进行尝试:
System.out.println(Set.class.getName() + " is " + ((Set.class.isAssignableFrom(Iterable.class)) ? "" : "NOT " ) + "assignable from " + Iterable.class.getName());
它打印java.util.Set is NOT assignable from java.lang.Iterable
。
这是为什么?
最佳答案
那是因为你正在使用 isAssignableFrom
错了。
作为the docs比如说,isAssignableFrom(Class<?> cls)
“确定此 Class 对象表示的类或接口(interface)是否与指定的 Class 参数表示的类或接口(interface)相同,或者是其父类(super class)或超接口(interface)”。所以cls
将是 Set.class,完整的语法将是:
Iterable.class.isAssignableFrom(Set.class)
.
...这确实返回了 true
.
关于java - 为什么 java.util.Set 不能从 java.lang.Iterable 分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64293083/