整数不能转换为Float

时间:2016-07-03 15:57:50

标签: java mongodb bukkit

目前我正在使用一个插件,该插件涉及在数据库中说出位置,然后缓存它们onEnable()。但是,我遇到这个错误 - “java.lang.ClassCastException:java.lang.Integer无法强制转换为java.lang.Float”当我尝试用短语定位一个位置时。这是我的短语方法:

 private HubLocation formatLocation(DBObject object){
    World world = Bukkit.getWorld((String)object.get("world"));
    Location location = new Location(world, (double)object.get("x"), (double)object.get("y"), (double)object.get("z"),
            (float)object.get("yaw"), (float)object.get("pitch"));
    return new HubLocation((String)object.get("name"), location);
}

希望有人可以提供帮助, 谢谢!

1 个答案:

答案 0 :(得分:1)

这是MonogDB进行奇怪类型转换的常见问题。最安全的解决方案是始终对数据库中的值使用Number类型:

private HubLocation formatLocation(DBObject object){
    World world = Bukkit.getWorld(object.get("world").toString());
    Location location = new Location(world, 
        ((Number)object.get("x")).doubleValue(), 
        ((Number)object.get("y")).doubleValue(), 
        ((Number)object.get("z")).doubleValue(),
        ((Number)object.get("yaw")).floatValue(), 
        ((Number)object.get("pitch")).floatValue());
    return new HubLocation(object.get("name").toString(), location);
}