2014-12-05 111 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>(); 
相關問題