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问题。您可能想修复问题上的标记。