我有一些遗留代码(使用 JDK 7u55 编译并成功运行)类似于以下内容:
private static class MyHashMap extends HashMap {
static Method getEntryMethod;
static {
try {
getEntryMethod = HashMap.class.getDeclaredMethod("getEntry", Object.class);
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
MyHashMap myHashMap = new MyHashMap();
}
尝试切换到 JDK 8u31 后,它失败了:
java.lang.NoSuchMethodException: java.util.HashMap.getEntry(java.lang.Object)
最佳答案
getEntry() 从来都不是 HashMap 类的公共(public) API 的一部分。看起来它在 Java 8 中发生了变化。这就是为什么您应该只依赖已发布的类的公共(public) API。
关于java - 无法通过 Java 8 上的反射调用 HashMap 的 getEntry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28543192/