using System;
using System.Collections.Generic;
public class Box<T> {
private T t; // T stands for "Type"
public void set(T t) {
this.t = t;
}
public T get() {
return t;
}
}
public class BoxDemo {
public static void addBox<T>(T u, List<Box<T>> boxes) {
Box<T> box = new Box<T>();
box.set(u);
boxes.Add(box);
}
public static void outputBoxes<T>(List<Box<T>> boxes) {
int counter = 0;
foreach (Box<T> box in boxes) {
T boxContents = box.get();
Console.WriteLine("Box #" + counter + " contains [" +
boxContents.ToString() + "]");
counter++;
}
}
public static void Main(String[] args) {
List<Box<int>> listOfIntegerBoxes =
new List<Box<int>>();
BoxDemo.addBox(10, listOfIntegerBoxes);
BoxDemo.addBox(20, listOfIntegerBoxes);
BoxDemo.addBox(30, listOfIntegerBoxes);
BoxDemo.outputBoxes(listOfIntegerBoxes);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKCnB1YmxpYyBjbGFzcyBCb3g8VD4gewogICAgcHJpdmF0ZSBUIHQ7IC8vIFQgc3RhbmRzIGZvciAiVHlwZSIgICAgICAgICAgCiAgICBwdWJsaWMgdm9pZCBzZXQoVCB0KSB7CiAgICAgICAgdGhpcy50ID0gdDsKICAgIH0KICAgIHB1YmxpYyBUIGdldCgpIHsKICAgICAgICByZXR1cm4gdDsKICAgIH0KfQpwdWJsaWMgY2xhc3MgQm94RGVtbyB7CgogIHB1YmxpYyBzdGF0aWMgdm9pZCBhZGRCb3g8VD4oVCB1LCBMaXN0PEJveDxUPj4gYm94ZXMpIHsKICAgIEJveDxUPiBib3ggPSBuZXcgQm94PFQ+KCk7CiAgICBib3guc2V0KHUpOwogICAgYm94ZXMuQWRkKGJveCk7CiAgfQoKICBwdWJsaWMgc3RhdGljIHZvaWQgb3V0cHV0Qm94ZXM8VD4oTGlzdDxCb3g8VD4+IGJveGVzKSB7CiAgICBpbnQgY291bnRlciA9IDA7CiAgICBmb3JlYWNoIChCb3g8VD4gYm94IGluIGJveGVzKSB7CiAgICAgIFQgYm94Q29udGVudHMgPSBib3guZ2V0KCk7CiAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJCb3ggIyIgKyBjb3VudGVyICsgIiBjb250YWlucyBbIiArCiAgICAgICAgICAgICBib3hDb250ZW50cy5Ub1N0cmluZygpICsgIl0iKTsKICAgICAgY291bnRlcisrOwogICAgfQogIH0KCiAgcHVibGljIHN0YXRpYyB2b2lkIE1haW4oU3RyaW5nW10gYXJncykgewogICAgTGlzdDxCb3g8aW50Pj4gbGlzdE9mSW50ZWdlckJveGVzID0KICAgICAgbmV3IExpc3Q8Qm94PGludD4+KCk7CiAgICBCb3hEZW1vLmFkZEJveCgxMCwgbGlzdE9mSW50ZWdlckJveGVzKTsKICAgIEJveERlbW8uYWRkQm94KDIwLCBsaXN0T2ZJbnRlZ2VyQm94ZXMpOwogICAgQm94RGVtby5hZGRCb3goMzAsIGxpc3RPZkludGVnZXJCb3hlcyk7CiAgICBCb3hEZW1vLm91dHB1dEJveGVzKGxpc3RPZkludGVnZXJCb3hlcyk7CiAgfQp9