2014-12-05 40 views
0

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

类型不匹配:不能从元素类型的对象转换为阻止

我看到它在这一行:

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

请勿使用原始类型。 'blocksToSkip'应该是'ArrayList '。 – August 2014-12-05 21:58:30

回答

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>(); 
相关问题