import java.util.HashMap;
import java.util.Map;
class VariableStore {
private final Map
<Class
<?>, Map
<String, Object
>> containers
= new HashMap
<>();
public <T
> T getVariable
(Class
<T
> clazz,
String key
) { Map
<String,
?> map
= containers.
get(clazz
); if (map == null) {
return null;
}
if (val == null) {
return null;
}
return clazz.cast(val);
}
if (value == null || key == null) {
}
Class<?> clazz = value.getClass();
Map
<String, Object
> map
= containers.
get(clazz
); if (map == null) {
map = new HashMap<>();
containers.put(clazz, map);
}
map.put(key, value);
}
public static void main
(String[] args
) { VariableStore vs = new VariableStore();
for (int i = 0; i < 10; i++) {
vs.
putVariable("" + i,
new Integer(i
)); vs.putVariable("" + i, "" + i);
}
for (int i = 0; i < 10; i++) {
System.
out.
printf("Got %s (%s)\n", iv, iv.
getClass()); System.
out.
printf("Got %s (%s)\n", sv, sv.
getClass()); }
}
}
aW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwppbXBvcnQgamF2YS51dGlsLk1hcDsKCgpjbGFzcyBWYXJpYWJsZVN0b3JlIHsKICAgIAogICAgcHJpdmF0ZSBmaW5hbCBNYXA8Q2xhc3M8Pz4sIE1hcDxTdHJpbmcsIE9iamVjdD4+IGNvbnRhaW5lcnMgPSBuZXcgSGFzaE1hcDw+KCk7CiAgICAKICAgIHB1YmxpYyA8VD4gVCBnZXRWYXJpYWJsZShDbGFzczxUPiBjbGF6eiwgU3RyaW5nIGtleSkgewogICAgICAgIE1hcDxTdHJpbmcsPz4gbWFwID0gY29udGFpbmVycy5nZXQoY2xhenopOwogICAgICAgIGlmIChtYXAgPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAgICAgICAgT2JqZWN0IHZhbCA9IG1hcC5nZXQoa2V5KTsKICAgICAgICBpZiAodmFsID09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgICAgIHJldHVybiBjbGF6ei5jYXN0KHZhbCk7CiAgICB9CiAgICAKICAgIHB1YmxpYyB2b2lkIHB1dFZhcmlhYmxlKFN0cmluZyBrZXksIE9iamVjdCB2YWx1ZSkgewogICAgICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IGtleSA9PSBudWxsKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIk5laXRoZXIgS2V5IG5vciBWYWx1ZSBjYW4gYmUgbnVsbDogIiArIGtleSArICIgLT4gIiArIHZhbHVlKTsKICAgICAgICB9CiAgICAgICAgQ2xhc3M8Pz4gY2xhenogPSB2YWx1ZS5nZXRDbGFzcygpOwogICAgICAgIE1hcDxTdHJpbmcsIE9iamVjdD4gbWFwID0gY29udGFpbmVycy5nZXQoY2xhenopOwogICAgICAgIGlmIChtYXAgPT0gbnVsbCkgewogICAgICAgICAgICBtYXAgPSBuZXcgSGFzaE1hcDw+KCk7CiAgICAgICAgICAgIGNvbnRhaW5lcnMucHV0KGNsYXp6LCBtYXApOwogICAgICAgIH0KICAgICAgICBtYXAucHV0KGtleSwgdmFsdWUpOwogICAgfQogICAgCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgVmFyaWFibGVTdG9yZSB2cyA9IG5ldyBWYXJpYWJsZVN0b3JlKCk7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7CiAgICAgICAgICAgIHZzLnB1dFZhcmlhYmxlKCIiICsgaSwgbmV3IEludGVnZXIoaSkpOwogICAgICAgICAgICB2cy5wdXRWYXJpYWJsZSgiIiArIGksICIiICsgaSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykgewogICAgICAgICAgICBJbnRlZ2VyIGl2ID0gdnMuZ2V0VmFyaWFibGUoSW50ZWdlci5jbGFzcywgIiIgKyBpKTsKICAgICAgICAgICAgU3RyaW5nIHN2ID0gdnMuZ2V0VmFyaWFibGUoU3RyaW5nLmNsYXNzLCAiIiArIGkpOwogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50ZigiR290ICVzICglcylcbiIsIGl2LCBpdi5nZXRDbGFzcygpKTsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGYoIkdvdCAlcyAoJXMpXG4iLCBzdiwgc3YuZ2V0Q2xhc3MoKSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIAogICAgfQoKfQo=