通过在线Java视频教程进行工作,遇到了一些麻烦。教程涉及我很少经验的复合设计模式。前两个教程进展顺利,第三个教程给了我一些问题。我已向教程的讲师/创建者寻求帮助,但没有得到回复。编码示例与“包装盒”有关,这是每个类/接口的代码:
礼物:
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);
}
}
SurpriseBox:
package composite;
public interface SurpriseBox {
void unWrap();
}
GiftSurpriseBox
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类,尤其是最后一行代码是我遇到问题的地方
客户:
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带有子盒子,并且当您为父母内部的每个包装呼叫拆包时,复合模式都允许
使用ECLIPSE JUNO并收到以下错误消息:
令牌语法错误,构造放置错误 令牌“:”的语法错误,此令牌后应为EnhancedForStatementHeaderInit
不能确定是否与我的JRE有关,因为补习的创建者没有得到有关JRE / COMPILER的信息
答案 0 :(得分:0)
问题是我使用的ECLIPSE IDE。我已经更新到Photon,并且一切正常。