fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.reflect.*;
  5. import java.lang.*;
  6. import java.io.*;
  7.  
  8. /* Name of the class has to be "Main" only if the class is public. */
  9. class Ideone
  10. {
  11. @FunctionalInterface
  12. interface Converter {
  13. Object convert(String s);
  14. }
  15. private static Map<Class,Converter> converterForClass = new HashMap<>();
  16. static {
  17. converterForClass.put(Integer.TYPE, s -> Integer.parseInt(s));
  18. converterForClass.put(Double.TYPE, s -> Double.parseDouble(s));
  19. converterForClass.put(String.class, s -> s);
  20. converterForClass.put(Long.TYPE, s -> Long.parseLong(s));
  21. };
  22.  
  23. static class Demo {
  24. public int a;
  25. public long b;
  26. public String c;
  27. public double d;
  28. @Override
  29. public String toString() {
  30. return a+":"+b+":'"+c+"':"+d;
  31. }
  32. }
  33.  
  34. public static void main (String[] args) throws java.lang.Exception
  35. {
  36. Object a = new Demo();
  37. Map<String,String> data = new HashMap<>();
  38. data.put("a", "123");
  39. data.put("b", "123456678789898");
  40. data.put("c", "HELLO");
  41. data.put("d", "123.456");
  42. for (Field f : Demo.class.getDeclaredFields()) {
  43. f.setAccessible(true);
  44. String str = data.get(f.getName());
  45. Object r = converterForClass.get(f.getType()).convert(str);
  46. f.set(a, r);
  47. }
  48. System.out.println(a);
  49. }
  50. }
Success #stdin #stdout 0.21s 320704KB
stdin
Standard input is empty
stdout
123:123456678789898:'HELLO':123.456