Java 即使没有强制转换,也会引发ClassCastException
我有一个Java 即使没有强制转换,也会引发ClassCastException,java,mongodb,classcastexception,objectid,Java,Mongodb,Classcastexception,Objectid,我有一个HashMap,我想在其中添加一个新条目。 ObjectId是一个BSON类,在我的例子中,它与MongoDB驱动程序一起提供 1 @Expose private Map<ObjectId, Integer> usedPaths; 2 3 public Project() 4 { 5 this.usedPaths = new HashMap<>(); 6 } 7 8 public void usePath(Obj
HashMap
,我想在其中添加一个新条目。
ObjectId
是一个BSON
类,在我的例子中,它与MongoDB驱动程序一起提供
1 @Expose private Map<ObjectId, Integer> usedPaths;
2
3 public Project()
4 {
5 this.usedPaths = new HashMap<>();
6 }
7
8 public void usePath(ObjectId someId, int pathId)
9 {
10 this.usedPaths.put(someId, pathId);
11 }
12
13 public void debug()
14 {
15 usePath(new ObjectId("5bfd98a2c06178796e66c204"), 1);
16 }
据我所知和所见,我甚至没有尝试将ObjectId强制转换为String,而且我从未访问代码中的BasicBonObject
类,ObjectId
也没有扩展它
提前感谢:)据我所知,您提供的代码中没有错误。异常表明该类是servlet的一部分。问题可能在于调用usePath(…)
方法前后发生的情况。问题是我试图将HashMap保存并加载到MongoDB或从MongoDB加载HashMap,它的Java驱动程序将任何传递的Map作为DBObject处理
谢谢你的提示 项目如何反序列化?我看到了@Expose
-注释。您是否尝试过在usePath
中设置断点?在运行时,它似乎不是一个HashMap
,而是一个basicbonobject
。在该异常跟踪中,usedPath
不是一个HashMap
。它是一个基本cbsonObject
。你确定你有正确的源代码吗?@Expose
做什么?似乎有人正在将usedPath
设置为意外设置。basicbonobject
是一个映射
,因此该赋值将起作用,但它不是一个映射
,而是一个映射
。
SCHWERWIEGEND: Servlet.service() for servlet [Jersey Web Application] in context with path [/KnowledgerServer] threw exception [java.lang.ClassCastException:
org.bson.types.ObjectId cannot be cast to java.lang.String] with root cause
java.lang.ClassCastException: org.bson.types.ObjectId cannot be cast to java.lang.String
at org.bson.BasicBSONObject.put(BasicBSONObject.java:36)
at de.knowledger.model.Project.usePath(Project.java:10)
at de.knowledger.model.Project.debug(Project.java:15)