即使没有强制转换也会抛出 ClassCastException
ClassCastException thrown even though there is no cast
我有一个 HashMap<ObjectId, Integer>
,我想在其中添加一个新条目。
ObjectId
是 BSON
class,在我的例子中是 MongoDB-Driver
。
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 }
当我调用调试方法时,抛出一个ClassCastException
:
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)
据我所知和所见,我什至没有尝试将 ObjectId 转换为字符串,而且我从来没有在我的代码中访问 BasicBSONObject
class,ObjectId
也不扩展它。
提前致谢:)
据我所知,您提供的这段代码没有错误。异常清楚地表明 class 是 servlet 的一部分。问题可能出在您调用 usePath(...)
方法之前和之后发生的情况。
问题是我试图保存和加载 HashMap to/from MongoDB,其 Java 驱动程序将任何传递的 Map 作为 DBObject 处理。
感谢您的提示!
我有一个 HashMap<ObjectId, Integer>
,我想在其中添加一个新条目。
ObjectId
是 BSON
class,在我的例子中是 MongoDB-Driver
。
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 }
当我调用调试方法时,抛出一个ClassCastException
:
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)
据我所知和所见,我什至没有尝试将 ObjectId 转换为字符串,而且我从来没有在我的代码中访问 BasicBSONObject
class,ObjectId
也不扩展它。
提前致谢:)
据我所知,您提供的这段代码没有错误。异常清楚地表明 class 是 servlet 的一部分。问题可能出在您调用 usePath(...)
方法之前和之后发生的情况。
问题是我试图保存和加载 HashMap to/from MongoDB,其 Java 驱动程序将任何传递的 Map 作为 DBObject 处理。
感谢您的提示!