整数不能转换为浮点数
Integer cannot be cast to Float
目前我正在开发一个插件,涉及在数据库中说出位置,然后缓存它们 onEnable()
。但是,我 运行 遇到了这个错误 - "java.lang.ClassCastException: java.lang.Integer cannot be cast to 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);
}
希望有人能帮忙,
谢谢!
这是 MongoDB 进行奇怪类型转换时的常见问题。最安全的解决方案是始终对数据库中的值使用 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);
}
目前我正在开发一个插件,涉及在数据库中说出位置,然后缓存它们 onEnable()
。但是,我 运行 遇到了这个错误 - "java.lang.ClassCastException: java.lang.Integer cannot be cast to 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);
}
希望有人能帮忙, 谢谢!
这是 MongoDB 进行奇怪类型转换时的常见问题。最安全的解决方案是始终对数据库中的值使用 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);
}