我正在使用Collection只能迭代数组或java.lang.Iterable的实例

时间:2017-08-02 21:13:21

标签: java object collections

我正在尝试解决此错误,但由于某种原因,无法找到问题来解决它。我在此代码中使用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.Iterable在线:for (Object challenge : challenges)

1 个答案:

答案 0 :(得分:3)

此处引用的Collection类型:

Collection challenges = null;

不是扩展java.util.Collection接口的Iterable接口 否则您将没有此错误消息:

  

只能遍历数组或java.lang.Iterable

的实例

在这一行:

for (Object challenge : challenges) {

您正在使用自定义Collection课程。

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