【问题标题】:Why is java.util.Set not Assignable From java.lang.Iterable?为什么 java.util.Set 不能从 java.lang.Iterable 分配?
【发布时间】:2021-01-25 07:18:51
【问题描述】:

当我调用Set.class.isAssignableFrom(Iterable.class) 时,它返回false

尽管如此,in the docsjava.util.Set 被列为java.lang.Iterable 的子接口。因此我的困惑。你甚至可以在一行代码中尝试一下:

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

这是为什么呢?

【问题讨论】:

    标签: java set iterable


    【解决方案1】:

    那是因为你用错了isAssignableFrom

    正如the docs 所说,isAssignableFrom(Class<?> cls)“确定此 Class 对象表示的类或接口是否与指定的 Class 参数表示的类或接口相同,或者是其超类或超接口”。所以cls 是 Set.class,完整的语法是:

    Iterable.class.isAssignableFrom(Set.class).

    ...确实返回true

    【讨论】:

      猜你喜欢
      • 2017-02-09
      • 1970-01-01
      • 1970-01-01
      • 2015-02-22
      • 2018-02-16
      • 2014-12-16
      • 2014-02-19
      • 2010-10-20
      • 1970-01-01
      相关资源
      最近更新 更多