【问题标题】:i am using Collection Can only iterate over an array or an instance of java.lang.Iterable我正在使用 Collection 只能遍历数组或 java.lang.Iterable 的实例
【发布时间】:2018-01-10 06:49:42
【问题描述】:

我正在尝试解决此错误,但由于某种原因,无法找到修复它的问题。我在这段代码中使用Collection。如果有人能指出我实际上缺少什么,我将是一个很大的帮助。

Collection challenges = null;
        Map challengesMap = new HashMap<String,String>();
        ForgotPasswordManager forgotPwdMgr = new ForgotPasswordManager(platform);
        System.out.println("after ForgotPasswordManager(platform)...before getSecretQuestion()");
        challenges = forgotPwdMgr.getSecretQuestion(userID);
        System.out.println("after getSecretQuestion()...");
        for (Object challenge : challenges) {
            String challengeStr = (String)challenge;
            System.out.println("doGetChallenges()...ChallengeStr = " + challengeStr);
            challengesMap.put(challengeStr.trim(), "");
        }

我在网上收到此错误Can only iterate over an array or an instance of java.lang.Iterablefor (Object challenge : challenges)

【问题讨论】:

标签: java object collections


【解决方案1】:

这里引用的Collection 类型:

Collection challenges = null;

不是扩展Iterable 接口的java.util.Collection 接口。
否则你不会有这个错误信息:

只能遍历数组或 java.lang.Iterable 的实例

在这一行:

for (Object challenge : challenges) {

您可能正在使用自定义 Collection 类。

因此,要解决您的问题,请让您的自定义 Collection 类实现 Iterable 或更简单:使用 JDK java.util.Collection 子类。

【讨论】:

  • 你能详细说明一下吗?我有点困惑@davidxxx
  • 好的。查看导入中的 Collection 类的包。你会看到那不是java.util.Collection。所以这意味着你使用自己的Collection 类。
  • 我正在使用 import.java.util.Collection,当我点击 Declared 类型时,它会将我带到 Collection 类 @davidxxx
  • 我想你在声明此代码的实际类的包中有一个Collection 类?
  • 导入后我没有在我的代码中定义 Collection 类,这可能是原因,因为我只在这段代码上使用集合@davidxxx
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多