获取带反射的地图项目

时间:2016-05-26 07:56:16

标签: java reflection

我正在尝试使用反射通过其键获取地图值:

HashMap<String, Float> myMap = new HashMap<String, Float>();
myMap.put("time", Float.valueOf(-1.7));
String param = "time";
//...
float modif = (float)myMap.getClass().getDeclaredMethod("get", String.class).invoke(myMap, param);

但我收到此错误通知:

java.lang.NoSuchMethodException: java.util.HashMap.get(java.lang.String)

请问任何人,为什么建议?

2 个答案:

答案 0 :(得分:2)

这里的问题是get方法的参数类型,它不是String而是Object,因为您可以看到here,这将有效:< / p>

float modif = (float)myMap.getClass().getDeclaredMethod("get", Object.class)
    .invoke(myMap, param);

答案 1 :(得分:1)

在调用DeclaredMethod函数期间提供错误的参数类型。它应该是Object.class而不是String.class

getDeclaredMethod("get", Object.class)

您示例中的完整行就像 -

Float modif = (Float) myMap.getClass().getDeclaredMethod("get", Object.class).invoke(myMap, param);