无法将整数转换为字节

时间:2014-06-25 12:28:14

标签: java minecraft bukkit

我试图使用Bukkit Minecraft api从配置文件中提取一个整数。我真的不明白为什么我必须使用一个字节(从来没有真正了解它们)并且在使用似乎适用于其他人的代码时会出现以下错误:

无法从Integer转换为byte。

player.getInventory().removeItem(new ItemStack(Material.getMaterial(dItemId1), 1, (byte) dItemMeta1));  

dItemMeta1只是从配置文件中提取的变量,定义如下:

public Integer dItemMeta1;
dItemMeta1 = getConfig().getInt("FirstDonationItemIdMeta");

有没有人可以告诉我正确使用它的方法,或者在从配置中获取值时如何正确地将其定义为一个字节?

2 个答案:

答案 0 :(得分:3)

您可以将Integer对象转换为int原语,或将int转换为byte但您无法从{{Integer转换1}}到byte(对Java设计者来说太过分了)

你能做的是

player.getInventory().removeItem(new ItemStack(
         Material.getMaterial(dItemId1), 1, dItemMeta1.byteValue()));

注意:如果dItemMeta1为null,则会抛出NullPointerException。

答案 1 :(得分:1)

这是因为你的变量dItemMeta1的类型是Integer(不是int),从Integer到byte的转换不是直接步骤,而是将其作为Integer->int->byte

您可以使用函数byteValue(),并编写dItemMeta1.byteValue(),直接从Integer返回字节。