/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.reflect.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
@FunctionalInterface
interface Converter {
}
private static Map<Class,Converter> converterForClass = new HashMap<>();
static {
converterForClass.
put(Double.
TYPE, s
-> Double.
parseDouble(s
)); converterForClass.
put(String.
class, s
-> s
); converterForClass.
put(Long.
TYPE, s
-> Long.
parseLong(s
)); };
static class Demo {
public int a;
public long b;
public double d;
@Override
return a+":"+b+":'"+c+"':"+d;
}
}
{
Map
<String,String
> data
= new HashMap
<>(); data.put("a", "123");
data.put("b", "123456678789898");
data.put("c", "HELLO");
data.put("d", "123.456");
for (Field f
: Demo.
class.
getDeclaredFields()) { f.setAccessible(true);
String str
= data.
get(f.
getName()); Object r
= converterForClass.
get(f.
getType()).
convert(str
); f.set(a, r);
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuKjsKaW1wb3J0IGphdmEubGFuZy4qOwppbXBvcnQgamF2YS5pby4qOwoKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7CglARnVuY3Rpb25hbEludGVyZmFjZQoJaW50ZXJmYWNlIENvbnZlcnRlciB7CgkJT2JqZWN0IGNvbnZlcnQoU3RyaW5nIHMpOwoJfQoJcHJpdmF0ZSBzdGF0aWMgTWFwPENsYXNzLENvbnZlcnRlcj4gY29udmVydGVyRm9yQ2xhc3MgPSBuZXcgSGFzaE1hcDw+KCk7CglzdGF0aWMgewoJCWNvbnZlcnRlckZvckNsYXNzLnB1dChJbnRlZ2VyLlRZUEUsIHMgLT4gSW50ZWdlci5wYXJzZUludChzKSk7CgkJY29udmVydGVyRm9yQ2xhc3MucHV0KERvdWJsZS5UWVBFLCBzIC0+IERvdWJsZS5wYXJzZURvdWJsZShzKSk7CgkJY29udmVydGVyRm9yQ2xhc3MucHV0KFN0cmluZy5jbGFzcywgcyAtPiBzKTsKCQljb252ZXJ0ZXJGb3JDbGFzcy5wdXQoTG9uZy5UWVBFLCBzIC0+IExvbmcucGFyc2VMb25nKHMpKTsKCX07CgkKCXN0YXRpYyBjbGFzcyBEZW1vIHsKCQlwdWJsaWMgaW50IGE7CgkJcHVibGljIGxvbmcgYjsKCQlwdWJsaWMgU3RyaW5nIGM7CgkJcHVibGljIGRvdWJsZSBkOwoJCUBPdmVycmlkZQoJCXB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CgkJCXJldHVybiBhKyI6IitiKyI6JyIrYysiJzoiK2Q7CgkJfQoJfQoJCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQlPYmplY3QgYSA9IG5ldyBEZW1vKCk7CgkJTWFwPFN0cmluZyxTdHJpbmc+IGRhdGEgPSBuZXcgSGFzaE1hcDw+KCk7CgkJZGF0YS5wdXQoImEiLCAiMTIzIik7CgkJZGF0YS5wdXQoImIiLCAiMTIzNDU2Njc4Nzg5ODk4Iik7CgkJZGF0YS5wdXQoImMiLCAiSEVMTE8iKTsKCQlkYXRhLnB1dCgiZCIsICIxMjMuNDU2Iik7CgkJZm9yIChGaWVsZCBmIDogRGVtby5jbGFzcy5nZXREZWNsYXJlZEZpZWxkcygpKSB7CgkJCWYuc2V0QWNjZXNzaWJsZSh0cnVlKTsKCQkJU3RyaW5nIHN0ciA9IGRhdGEuZ2V0KGYuZ2V0TmFtZSgpKTsKCQkJT2JqZWN0IHIgPSBjb252ZXJ0ZXJGb3JDbGFzcy5nZXQoZi5nZXRUeXBlKCkpLmNvbnZlcnQoc3RyKTsKCQkJZi5zZXQoYSwgcik7CgkJfQoJCVN5c3RlbS5vdXQucHJpbnRsbihhKTsKCX0KfQ==