import java.util.ArrayList;
class Rocket<T> {
private T value;
public Rocket() {}
public Rocket( T value ) { this.value = value; }
public void set(T value) { this.value = value; }
public T get() { return value; }
@Override
return getClass() + "[value=" + value.toString() + "]";
}
public boolean isEmpty() { return value == null; }
public void empty() { value = null; }
}
class Player {
public Rocket<?> rightRocket;
public Rocket<?> leftRocket;
public Player
(String name, Rocket
<?> rightRocket, Rocket
<?> leftRocket
) { this.name = name;
this.rightRocket = rightRocket;
this.leftRocket = leftRocket;
}
return name;
}
public void setName
(String name
) { this.name = name;
}
public Rocket<?> getRightRocket() {
return rightRocket;
}
public void setRightRocket(Rocket<?> rightRocket) {
this.rightRocket = rightRocket;
}
public Rocket<?> getLeftRocket() {
return leftRocket;
}
public void setLeftRocket(Rocket<?> leftRocket) {
this.leftRocket = leftRocket;
}
@Override
return getClass() + "[name=" + name + ", rightRocket=" + rightRocket.toString() + ", leftRocket=" + leftRocket.toString() + "]";
}
}
class Ideone
{
public static void main
(String[] args
) { Rocket<ArrayList<String>> rightRocket = new Rocket<>(
new ArrayList<>() {{
add("BU");
add("BU");
add("BU");
}}
);
Player kleinerB = new Player(
"kleinerK",
rightRocket,
new Rocket<>(42)
);
System.
out.
println(kleinerB.
toString());
@SuppressWarnings("unchecked")
ArrayList<String> arrayList = (ArrayList<String>)kleinerB.getRightRocket().get();
}
rightRocket.set(new ArrayList<>());
}
}
aW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CgpjbGFzcyBSb2NrZXQ8VD4gewogICAgcHJpdmF0ZSBUIHZhbHVlOwoKICAgIHB1YmxpYyBSb2NrZXQoKSB7fQogICAgcHVibGljIFJvY2tldCggVCB2YWx1ZSApIHsgdGhpcy52YWx1ZSA9IHZhbHVlOyB9CgogICAgcHVibGljIHZvaWQgc2V0KFQgdmFsdWUpIHsgdGhpcy52YWx1ZSA9IHZhbHVlOyB9CiAgICBwdWJsaWMgVCBnZXQoKSB7IHJldHVybiB2YWx1ZTsgfQoKICAgIEBPdmVycmlkZQogICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKICAgICAgICByZXR1cm4gZ2V0Q2xhc3MoKSArICJbdmFsdWU9IiArIHZhbHVlLnRvU3RyaW5nKCkgKyAiXSI7CiAgICB9CiAgICBwdWJsaWMgYm9vbGVhbiBpc0VtcHR5KCkgeyByZXR1cm4gdmFsdWUgPT0gbnVsbDsgfQogICAgcHVibGljIHZvaWQgZW1wdHkoKSB7IHZhbHVlID0gbnVsbDsgfQp9CgoKY2xhc3MgUGxheWVyIHsKICAgIHB1YmxpYyBTdHJpbmcgbmFtZTsKICAgIHB1YmxpYyBSb2NrZXQ8Pz4gcmlnaHRSb2NrZXQ7CiAgICBwdWJsaWMgUm9ja2V0PD8+IGxlZnRSb2NrZXQ7CgogICAgcHVibGljIFBsYXllcihTdHJpbmcgbmFtZSwgUm9ja2V0PD8+IHJpZ2h0Um9ja2V0LCBSb2NrZXQ8Pz4gbGVmdFJvY2tldCkgewogICAgICAgIHRoaXMubmFtZSA9IG5hbWU7CiAgICAgICAgdGhpcy5yaWdodFJvY2tldCA9IHJpZ2h0Um9ja2V0OwogICAgICAgIHRoaXMubGVmdFJvY2tldCA9IGxlZnRSb2NrZXQ7CiAgICB9CgogICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgewogICAgICAgIHJldHVybiBuYW1lOwogICAgfQogICAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkgewogICAgICAgIHRoaXMubmFtZSA9IG5hbWU7CiAgICB9CiAgICBwdWJsaWMgUm9ja2V0PD8+IGdldFJpZ2h0Um9ja2V0KCkgewogICAgICAgIHJldHVybiByaWdodFJvY2tldDsKICAgIH0KICAgIHB1YmxpYyB2b2lkIHNldFJpZ2h0Um9ja2V0KFJvY2tldDw/PiByaWdodFJvY2tldCkgewogICAgICAgIHRoaXMucmlnaHRSb2NrZXQgPSByaWdodFJvY2tldDsKICAgIH0KICAgIHB1YmxpYyBSb2NrZXQ8Pz4gZ2V0TGVmdFJvY2tldCgpIHsKICAgICAgICByZXR1cm4gbGVmdFJvY2tldDsKICAgIH0KICAgIHB1YmxpYyB2b2lkIHNldExlZnRSb2NrZXQoUm9ja2V0PD8+IGxlZnRSb2NrZXQpIHsKICAgICAgICB0aGlzLmxlZnRSb2NrZXQgPSBsZWZ0Um9ja2V0OwogICAgfQoKICAgIEBPdmVycmlkZQogICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKICAgICAgICByZXR1cm4gZ2V0Q2xhc3MoKSArICJbbmFtZT0iICsgbmFtZSArICIsIHJpZ2h0Um9ja2V0PSIgKyByaWdodFJvY2tldC50b1N0cmluZygpICsgIiwgbGVmdFJvY2tldD0iICsgbGVmdFJvY2tldC50b1N0cmluZygpICsgIl0iOwogICAgfQp9CgpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIFJvY2tldDxBcnJheUxpc3Q8U3RyaW5nPj4gcmlnaHRSb2NrZXQgPSBuZXcgUm9ja2V0PD4oCiAgICAgICAgICAgIG5ldyBBcnJheUxpc3Q8PigpIHt7CiAgICAgICAgICAgICAgICBhZGQoIkJVIik7CiAgICAgICAgICAgICAgICBhZGQoIkJVIik7CiAgICAgICAgICAgICAgICBhZGQoIkJVIik7CiAgICAgICAgICAgIH19CiAgICAgICAgKTsKICAgICAgICBQbGF5ZXIga2xlaW5lckIgPSBuZXcgUGxheWVyKAogICAgICAgICAgICAia2xlaW5lcksiLAogICAgICAgICAgICByaWdodFJvY2tldCwKICAgICAgICAgICAgbmV3IFJvY2tldDw+KDQyKQogICAgICAgICk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGtsZWluZXJCLnRvU3RyaW5nKCkpOwoKICAgICAgICBAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikKICAgICAgICBBcnJheUxpc3Q8U3RyaW5nPiBhcnJheUxpc3QgPSAoQXJyYXlMaXN0PFN0cmluZz4pa2xlaW5lckIuZ2V0UmlnaHRSb2NrZXQoKS5nZXQoKTsKICAgICAgICBmb3IoU3RyaW5nIHMgOiBhcnJheUxpc3QpIHsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludChzKTsKICAgICAgICB9CiAgICAgICAgcmlnaHRSb2NrZXQuc2V0KG5ldyBBcnJheUxpc3Q8PigpKTsKICAgIH0KfQ==