2016-11-18 5 views
4

Надеюсь, что система может выйти из функции пустоты HandlePost, когда встречается условие Случай 1, поэтому я добавляю return после DoSomething1().Как выйти из функции void в Android?

Но Android Studio скажет мне, что информация 'return' является излишней, как последнее утверждение в методе '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

Вместо того, чтобы возвращаться, вы можете просто положить «случай 2» в блок 'else if'. – Gulllie

ответ

3

return заявление не требуется, если он является последним (выполнено) утверждение в методе. Вы можете либо игнорировать предупреждение, либо удалить инструкцию. Примечание: первое return в вашем примере - необходимо, но второе - нет.

Вы можете полностью избежать возврата в своем методе, если вы положили Корпус 2 в блок else.

0

Удалить return; заявление после того, как

DoSomething2(); 

И Lint не будет поднимать любые проблемы

+3

Было бы лучше объяснить ОП, почему появляется ворс, а не говорить делать то, что делает ворс. Вот почему он спрашивает –

1

Хотя я согласен, что второе return утверждение не совсем обязательно, я не согласен, что это должно быть предупреждение, что делает смысл для вас сохранить его.

Я видел ошибки, введенные этим чрезмерным усердием, если вы удалите это заявление return, то вы удаляете важное намерение метода. На данный момент это прекрасно, но для кого-то слишком легко прийти в будущем и добавить больше функциональности в нижней части этого метода и потенциально вызвать проблемы.

Мое предложение было бы проигнорировать это предупреждение в этом конкретном случае.

+0

Пока я согласен с большей частью вашего ответа, я категорически не согласен с вашим последним предложением. В этом конкретном случае он может легко решить это без каких-либо операторов возврата, если он просто использует инструкции if-else или switch (даже если последнее может потребовать немного больше переосмысления базового дизайна). Это не только устранило бы предупреждение, но и помешало бы ему удалить этот важный намерение. И даже убедитесь, что новым программистам не придется думать о том, куда следует возвращать, а где нет, если они просто хотят добавить больше дел. – Mark

+0

@Mark Я полностью согласен – StuPointerException