2012-06-19 25 views
0

關閉它看起來像它與IDE(Eclipse)相關。我用相同的代碼和不同的名稱構建了一個單獨的類,它工作正常。嘗試清潔,重新啓動等。java - 修改成員變量會導致行被跳過

更新後的測試代碼我被困在這裏,我猜這是愚蠢的。我已經削減了我的代碼,這再現了這個問題。

這會執行mMemberVar = 2;,然後導致return now.add(Calendar.DAY_OF_YEAR, 1);被跳過。然後跳到return null;

這是由於它是由Serializable和修改它自己的成員變量奇怪嗎?我找不到任何東西。

public class Alarm implements Serializable { 
    int mMemberVar = 0; 
    public Calendar nextTime() { 
     Calendar now = Calendar.getInstance(); 
     if (true) { 
      if (true) { 
       if (true) { 
        mMemberVar = 2; 
        // return is skipped 
        now.add(Calendar.DAY_OF_YEAR, 1); 
        return now; 
       } 
      } 
      now.add(Calendar.DAY_OF_YEAR, 2); 
      return now; 
     } 
     return null; 
    } 
} 
+1

嘗試清理和重建。 – samitgaur

+0

對不起大家。我與now.add(...)的錯誤。我已經修復了我的測試代碼,但它仍然存在。我已經清理並重建了。 – Kirk

+1

@Kirk對不起,但我不能重現這個問題。請參閱:http://ideone.com/fCIaO。嘗試在該方法的開頭添加'System.out.println(「Hello world!」);'以確保編譯代碼。 – bezmax

回答

4

可能您的IDE甚至沒有重新編譯您在此處編寫的代碼。我猜測,因爲Calendar.add不會返回任何內容,所以您顯示的代碼根本無法編譯。

所以基本上,你運行的是老版本的代碼,它總是返回null。嘗試在IDE中執行「清理」,然後「重建」或類似的操作。

+0

看起來它與IDE(Eclipse)有關。我用相同的代碼和不同的名稱構建了一個單獨的類,它工作正常。嘗試清潔,重新啓動等。你可能是對的,只需要弄清楚如何完全清理它 – Kirk

3

Calendar的add方法返回void。您應該將add(...)放在返回線之前,並且return now;

1

你可以有這樣的代碼如下......添加返回void ...

import java.io.Serializable; 
import java.util.Calendar; 

public class Alarm implements Serializable { 
    int mMemberVar = 0; 
    public Calendar nextTime() { 
     Calendar now = Calendar.getInstance(); 
     if (true) { 
      if (true) { 
       if (true) { 
        mMemberVar = 2; 
        // return is skipped 
        now.add(Calendar.DAY_OF_YEAR, 1); 
        return now; 
       } 
      } 
      now.add(Calendar.DAY_OF_YEAR, 2); 
      return now; 
     } 
     return null; 
    } 
} 
相關問題