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)