我正在尝试使用反射通过其键获取地图值:
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)
请问任何人,为什么建议?
答案 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);