通过在线 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);
}
}
惊喜盒:
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 类,尤其是最后一行代码是我遇到问题的地方
客户:
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 具有子盒子,并且复合模式允许当您为父文件中的每个包裹调用 unwrap 时被打开。
使用 ECLIPSE JUNO 并收到以下错误消息:
标记上的语法错误,错位的构造 标记“:”上的语法错误,在此标记后预期 EnhancedForStatementHeaderInit
不确定这是否与我的 JRE 有关,因为教程的创建者没有提供有关他的 JRE/编译器的信息
慕婉清6462132
相关分类