簡體   English   中英

如何擺脫ClassCastException

[英]How to escape from ClassCastException

這是我的收藏:

 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);
    }
}

線程“主”中的異常java.lang.ClassCastException:com.mongodb.BasicDBObject無法在Test.main(Test.java:19)上強制轉換為PowerData

您可以這樣更改PowerData類:

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));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM