什么是“类型不匹配”,我该如何解决?

如何解决此错误?

类型不匹配:无法从元素类型Object转换为Block

我在这一行看到了它:

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

这是一种原始类型

 ArrayList blocksToSkip 

Java期待一切,而不仅仅是Block类型。 因此,您需要一个类型转换

 ArrayList blocksToSkip = new ArrayList(); // Rest of your code for (Object b : blocksToSkip){ ev.blockList().remove( (Block)b ); } 

请注意,不鼓励使用原始类型。 你应该参数化

 ArrayList blocksToSkip = new ArrayList();