java - 整数不能转换为 float

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

希望有人能帮忙 谢谢!

最佳答案

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

关于java - 整数不能转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38171700/

相关文章:

java - getSubimage 因未知原因抛出 NullPointerException

java - 由于在 EC2 实例上使用了所有内存,MongoDB 性能变慢

java - 遍历 List 还是从 List 中通过索引获取对象?

java - 如何使用有效的泛型声明 Class.class

java - 字符串精确匹配和潜在匹配

mongodb - 在 pyspark RDD 上应用映射函数

java - Bukkit 自定义元素消耗

java - 传送到下一个玩家

java - 跳过maven中的测试用例执行甚至不编译测试用例

linux - Azure 中推荐的副本集配置