我试图使用Bukkit Minecraft api从配置文件中提取一个整数。我真的不明白为什么我必须使用一个字节(从来没有真正了解它们)并且在使用似乎适用于其他人的代码时会出现以下错误:
无法从Integer转换为byte。
player.getInventory().removeItem(new ItemStack(Material.getMaterial(dItemId1), 1, (byte) dItemMeta1));
dItemMeta1只是从配置文件中提取的变量,定义如下:
public Integer dItemMeta1;
dItemMeta1 = getConfig().getInt("FirstDonationItemIdMeta");
有没有人可以告诉我正确使用它的方法,或者在从配置中获取值时如何正确地将其定义为一个字节?
答案 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返回字节。