Java 如何摆脱ClassCastException
这是我的收藏:Java 如何摆脱ClassCastException,java,Java,这是我的收藏: db.power.find().pretty() { "_id" : ObjectId("513e4022cc6d8d7ff2c83239"), "Indicator" : "One", "sex" : "male" } 如何从ClassCastException中退出 import java.net.UnknownHostException; import com.mongodb.BasicDBObject; impo
db.power.find().pretty()
{
"_id" : ObjectId("513e4022cc6d8d7ff2c83239"),
"Indicator" : "One",
"sex" : "male"
}
如何从ClassCastException
中退出
import java.net.UnknownHostException;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.Mongo;
public class Test {
public static void main(String args[]) throws UnknownHostException {
Mongo mongo = new Mongo();
DB db = mongo.getDB("at");
DBCollection testdata = db.getCollection("power");
BasicDBObject query = new BasicDBObject();
query.put("Indicator", "One");
PowerData data = (PowerData) testdata.findOne(query);
System.out.println(data.getSize());
}
}
import com.mongodb.BasicDBObject;
public class PowerData extends BasicDBObject{
public String getSize() {
return (String) get("sex");
}
public void setSize(String sex) {
put("sex", sex);
}
public String getIndicator() {
return (String) get("Indicator");
}
public void setIndicator(String Indicator) {
put("Indicator", Indicator);
}
public String getId() {
return (String) get("_id");
}
public void setId(String _id) {
put("_id", _id);
}
}
线程“main”java.lang.ClassCastException中的异常:com.mongodb.BasicDBObject无法转换为PowerData
在Test.main(Test.java:19)
public class PowerData extends BasicDBObject{
private BasicDBObject wrapped;
public PowerData(BasicDBObject o) {
this.wrapped = o;
}
public String getSize() {
return (String) o.get("sex");
}
public void setSize(String sex) {
o.put("sex", sex);
}
public String getIndicator() {
return (String) o.get("Indicator");
}
public void setIndicator(String Indicator) {
o.put("Indicator", Indicator);
}
public String getId() {
return (String) o.get("_id");
}
public void setId(String _id) {
o.put("_id", _id);
}
}
在main
方法中,替换PowerData data=(PowerData)testdata.findOne(query)代码>包含以下内容:
PowerData data = new PowerData(testdata.findOne(query));
您正试图将BasicDBObject强制转换为扩展BasicDBObject的对象。这是无效的,因为BasicDBObject不是PowerData对象(如果您尝试将实例化的PowerData强制转换为BasicDBObject,则可以)。您可以将PowerData对象实例化并传递给findOne(),而不是BasicDBObject。谢谢,我将PowerData对象传递给findOne(),但仍然得到相同的ClassCastExcetion。顺便说一句,这是Java问题而不是mongoDB问题。您可能想修复问题上的标记。