2016-05-16 50 views
-2

我對此代碼有問題,它說「無法訪問的代碼」。
上面說的是Eclipse編輯器中的無法訪問的代碼

EntityLivingBase entity = (EntityLivingBase) theObject; 

是無法訪問的代碼。
這裏是我的代碼:

@Override 
public void onRender() { 

    if (!this.isToggled()) 
     return; 

    for(Object theObject : mc.theWorld.loadedEntityList) { 
     if(!(theObject instanceof EntityLivingBase)) { 
      continue; 

      EntityLivingBase entity = (EntityLivingBase) theObject; 

      if(entity instanceof EntityPlayer) { 
       if(entity != mc.thePlayer) 
        player(entity); 
       continue; 
      } 

      if (entity instanceof EntityMob) { 
       mob(entity); 
       continue; 
      } 

      if (entity instanceof EntityAnimal) { 
       animal(entity); 
       continue; 
      } 

      passive(entity); 
     } 
    } 
super.onRender(); 
} 
+0

我懷疑你可以刪除所有這些繼續語句,並且你的邏輯在最初的if語句中是錯誤的。 '!(EntityLivingBase的Object實例)'應該是'EntityLivingBase'的對象實例,然後你立即將它轉換爲它。不要稱之爲「theObject」。稱之爲比這更有意義的東西:) – ManoDestra

+0

謝謝,你這爲我工作! 現在工作。 〜我沒有真正使用Java腳本,我還在學習。 謝謝! – LiamYS

+0

@LiamYS請學習[tag:java]和[tag:javascript]之間的區別(除了相似的名稱和algol-like語法外,它們很**不同)。 –

回答

0

隨着continue你結束在該點的迭代。其餘代碼無法訪問,因爲它永遠不會被處理。

+0

所以我需要刪除繼續; ? – LiamYS

0

continue關鍵字使Java跳過代碼的其餘部分,然後重新迭代for循環中的下一個元素。在for循環中的其餘代碼有時間運行之前,您的代碼所做的就是跳到下一個迭代。我真的不知道你爲什麼把它放在那裏,也許是誤解它的用途?

0

其他人說的是正確的。 continue總是跳過其餘的代碼,因爲它永遠不會被達到,所以它變得毫無用處,因此你會得到無法訪問的語句錯誤。

我認爲這是一個錯字的錯誤,如果我理解正確的話,則代碼應該是:

if(!(theObject instanceof EntityLivingBase)) { 
     continue; 
} // This is missing. 

的代碼的其餘部分應該是你關閉if塊之後。