如何解决此错误?
类型不匹配:无法从元素类型对象转换为块
我在这一行看到了:
for (Block b : blocksToSkip){
这是完整的代码。
@EventHandler(priority=EventPriority.NORMAL, ignoreCancelled=true)
public void onEntityExplode(EntityExplodeEvent ev){
ArrayList blocksToSkip = new ArrayList();
Location rootLoc = ev.getLocation();
if (!SkyMagic.IsInIslandWorld(rootLoc)) return;
for (Block b : ev.blockList()){
Location loc = b.getLocation();
IslandData data = SkyMagic.GetIslandAt(loc);
if ((data != null) && (data.owner != null)){
blocksToSkip.add(b);
}
}
for (Block b : blocksToSkip){
ev.blockList().remove(b);
}
}
答案 0 :(得分:1)
这是原始类型:
ArrayList blocksToSkip
Java期望所有内容,而不仅仅是Block
类型。
因此,您需要类型转换。
ArrayList blocksToSkip = new ArrayList();
// Rest of your code
for (Object b : blocksToSkip){
ev.blockList().remove( (Block)b );
}
请注意,不建议使用原始类型。 您应该参数化。
ArrayList<Block> blocksToSkip = new ArrayList<Block>();