java - 为什么 java.util.Set 不能从 java.lang.Iterable 分配?

标签 java set iterable

当我调用 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/

相关文章:

java - 使用 DeferredResult 时输入流关闭

java - Hook Portlet 项目

java - 平台 Sprite 不会出现在我的 JFrame 上

java - 在泛型类中使用 ArrayList 实现集合

Scala Option[String] 映射变成可迭代的

Java、谷歌集合库; AbstractIterator 的问题?

java Ant : does ant build files have a @var@ parameters and how to handle them?

c++ - 获取指向 std::set 中对象的指针 (c++)

java - 如何获取每个无序元素对,而不懒惰地从两个列表中重复?

java - 测试一个字符串是否与集合中的任何其他字符串不同