2016-11-18 71 views
4

我希望系統在滿足條件1的情況下可以退出無效功能HandlePost,所以我在DoSomething1()之後加上return如何在Android中的void函數中退出?

但Android Studio告訴我信息'返回'是不真實的,因爲'void'方法的最後一個陳述!

private void HandlePost(IHTTPSession session){ 
    try { 

     Map<String, String> files = new HashMap<String, String>(); 
     session.parseBody(files); 

     //Case 1 
     String deleteValue=session.getParms().get("ActionDelete"); 
     if (deleteValue!=null){ 
      DoSomething1(); 
      return; 
     } 

     //Case 2 
     String copyValue=session.getParms().get("ActionCopy"); 
     if (copyValue!=null){ 
      DoSomething2(); 
      return; 
     } 

    } catch (Exception e) { 
     Utility.LogError("This is an error "+e.getMessage()); 
    } 
} 
+2

您可以將「case 2」放在「else if」塊中,而不是返回。 – Gulllie

回答

3

如果return語句是方法中的最後一個(已執行)語句,則不需要該語句。您可以忽略警告或刪除語句。注意:示例中的第一個return,但第二個不是。

如果您將情況2置於else區塊中,則可以完全避免您方法中的退貨。

0

刪除return;語句後

DoSomething2(); 

和絨毛不會引發任何問題

+3

最好解釋一下OP爲什麼會出現棉絨,而不是告訴做棉絨的功能。這就是爲什麼他要求 –

1

雖然我同意第二return說法不完全必需的,我不同意,這應該是一個警告,它使感覺你保持它。

我見過這種過分熱心的警告引入的錯誤,如果你刪除了那個return語句,那麼你正在刪除該方法的一個重要意圖。目前這樣很好,但是對於某些人來說,這太容易了,並且將更多的功能添加到此方法的底部,並可能導致問題。

我的建議是在此特定情況下忽略此警告。

+0

雖然我同意你的大部分答案,但我堅決不同意你最後一句話。在這種特定情況下,如果他只是使用if-else或switch語句(儘管後者可能需要對基本設計進行更多的反思),他可以輕鬆地解決此問題,而無需任何返回語句。這不僅可以解決警告,還可以防止他去除那些重要的意圖,甚至可以確保新程序員不必考慮將回報放在哪裏,以及如果他們只是想添加更多案例,哪怕不是。 – Mark

+0

@Mark我完全同意 – StuPointerException