如何修复:令牌语法错误,错误放置的构造错误

How to fix: Syntax error on token(s), misplaced construct(s) Error

通过在线 java 视频教程,运行 遇到了一些麻烦。教程涉及我经验不足的复合设计模式。前两个教程进展顺利,第三个教程给我带来了问题。我已向 instructor/creator 的教程寻求帮​​助,但没有得到回复。编码示例与 "unwrapping boxes" 有关,这是我每个 class/interface:

的代码

礼物:

package composite;

public class Gift implements SurpriseBox {

    private String giftName;

    public Gift(String name) {
        this.giftName = name;
    }
    public void unWrap() {
        System.out.println("Unwrapping gift: " + this.giftName);
    }

}

惊喜盒:

package composite;

public interface SurpriseBox {

    void unWrap();

}

惊喜礼盒

package composite;

import java.util.ArrayList;

public class GiftSurpriseBox implements SurpriseBox {

    private ArrayList<SurpriseBox> surpriseBoxes;

    public GiftSurpriseBox() {
        this.surpriseBoxes = new ArrayList<>();

    }

    public void add(SurpriseBox box){
        this.surpriseBoxes.add(box);
    }

    public void remove(SurpriseBox box) {
        this.surpriseBoxes.remove(box);
    }

    public void unWrap() {
        surpriseBoxes.forEach(SurpriseBox::unWrap);
    }

}

SurpriseBox class 特别是最后一行代码是我 运行 遇到问题的地方

客户:

package composite;

public class Client {
    public static void main(String[] args) {
        GiftSurpriseBox giftBox = new GiftSurpriseBox();
        GiftSurpriseBox subGiftBox = new GiftSurpriseBox();

        Gift gift = new Gift("Toy Car");
        Gift gift2 = new Gift("Toy Plane");

        giftBox.add(gift);
        subGiftBox.add(gift2);

        giftBox.add(subGiftBox);

        giftBox.unWrap();
    }

}

我相信,由于对主题的了解很少,这里的想法是您正在制作礼物并将它们放在盒子里,SurpriseBox 有 children 个盒子,当您为每个包裹调用 unwrap 时,复合模式允许在 parents 内展开。

使用 ECLIPSE JUNO 并收到以下错误消息:

令牌语法错误,错误放置的结构 令牌“:”的语法错误,EnhancedForStatementHeaderInit 预计在此令牌后

不确定这是否与我的 JRE 有关,因为教程的创建者没有提供关于他的 JRE/COMPILER[=37 的信息=]

问题出在我使用的 ECLIPSE IDE 上。我已经更新到 Photon,一切正常。