使用Java 8 update101时,HashMap.entries无法强制转换为Collection
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用Java 8 update101时,HashMap.entries无法强制转换为Collection,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1901字,纯文字阅读大概需要3分钟。
内容图文
![使用Java 8 update101时,HashMap.entries无法强制转换为Collection](/upload/InfoBanner/zyjiaocheng/759/7bf95ff0bbef47098a1250aba9d36198.jpg)
更新到Java 8更新101后,我在以下代码中遇到异常.它与Java 8更新91一起工作正常.
访问密钥库:
KeyStore ks = KeyStore.getInstance("WINDOWS-MY");
ks.load(null, null);
Field field = ks.getClass().getDeclaredField("keyStoreSpi");
field.setAccessible(true);
KeyStoreSpi kss = (KeyStoreSpi) field.get(ks);
Collection entries;
field = kss.getClass().getEnclosingClass().getDeclaredField("entries");
field.setAccessible(true);
// This is where the exception happens
entries = (Collection) field.get(kss);
// I then have to loop on these entries, something like this:
for (Object entry : entries) { //code }
类型转换,抛出异常:
java.util.HashMap cannot be cast to java.util.Collection
Java 8更新101中最近的任何更改?怎么解决?
解决方法:
我确认它不能使用以下作为测试代码
import java.util.HashMap;
import java.util.Collection;
public class HelloWorld {
public static void main(String[] args) {
HashMap map = new HashMap();
Collection c;
c = (Collection) map;
}
}
结果是线程“main”中的异常java.lang.ClassCastException:java.util.HashMap无法强制转换为java.util.Collection
在HelloWorld.main(HelloWorld.java:8)
您可以使用像这样的values()方法覆盖它
import java.util.HashMap;
import java.util.Collection;
public class HelloWorld {
public static void main(String[] args) {
HashMap map = new HashMap();
Collection c;
c = map.values();
}
}
所以你的代码应该是这样的
import java.util.HashMap;
import java.util.Collection;
import java.security.*;
import java.lang.reflect.Field;
public class HelloWorld {
public static void main(String[] args) {
try{
KeyStore ks = KeyStore.getInstance("WINDOWS-MY");
ks.load(null, null);
Field field = ks.getClass().getDeclaredField("keyStoreSpi");
field.setAccessible(true);
KeyStoreSpi kss = (KeyStoreSpi) field.get(ks);
Collection entries;
field =kss.getClass().getEnclosingClass().getDeclaredField("entries");
field.setAccessible(true);
entries = ((HashMap) field.get(kss)).values();
}catch(Exception e){
e.printStackTrace();
}
}
}
内容总结
以上是互联网集市为您收集整理的使用Java 8 update101时,HashMap.entries无法强制转换为Collection全部内容,希望文章能够帮你解决使用Java 8 update101时,HashMap.entries无法强制转换为Collection所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。