什么是“类型不匹配”,我该如何解决?
如何解决此错误?
类型不匹配:无法从元素类型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 ();