Was kommt zurück? (ohne Wert) bedeuten?

8

Ich habe die APK (Android-App) von jemandem extrahiert, um den Java-Quellcode zu sehen, und viele return; -Codes gesehen, sogar bei void -Methoden.

Zum Beispiel:

%Vor%

Wie kommt es, dass die App auf meinem Handy gut läuft?

Ich denke, return; ist wie eine Abkürzung, um von der Methode abzuweichen. Ist das richtig?

    
hrsetyono 04.03.2013, 03:45
quelle

3 Antworten

3

Um Ihre erste Frage zu beantworten: Ich nehme an, dass dieser Code dekompiliert ist. Beachten Sie, dass Decompiler keine one-to-one-Konvertierer von binärem dex-Code zu dem Java-Code sind, der zum Generieren dieser Binärdateien verwendet wurde. Sie haben oft Probleme beim Parsen verschiedener Kontrollstrukturen wie Loops und Switches. Außerdem kann die Binärdatei verschleiert werden, was bedeutet, dass die Binärdatei nach der Kompilierung so modifiziert wird, dass sie voll funktionsfähig ist, aber schwerer zu dekompilieren und zu rekonstruieren (im Wesentlichen um zu verhindern, was Sie hier versuchen :)). Sie können toten Code hinzufügen, wie eine return-Anweisung, die nicht da sein sollte, mangle-Schleifen und if-Anweisungen, um dekompilierten Code zu verwirren.

    
Denis Tulskiy 04.03.2013, 04:01
quelle
16

Wenn die Methode void zurückgibt, verlässt return; die Methode nur bei dieser Anweisung und führt die folgenden Anweisungen nicht aus.

    
Brad 04.03.2013 03:52
quelle
8

Ja, das ist richtig. Sehen Sie sich den unteren Teil von Ссылка an:

  

Die Rückgabeerklärung

     

Die letzte der Verzweigungsanweisungen ist die return-Anweisung. Das   return-Anweisung beendet die aktuelle Methode und den Kontrollfluss   kehrt dorthin zurück, wo die Methode aufgerufen wurde. Die Return-Anweisung hat zwei   Formen: eine, die einen Wert zurückgibt, und eine, die das nicht tut. Zurückgeben eines   Geben Sie einfach den Wert ein (oder einen Ausdruck, der den Wert berechnet   Wert) nach dem Schlüsselwort return.

     

return ++ zählen; Der Datentyp des zurückgegebenen Wertes muss mit dem übereinstimmen   Typ des deklarierten Rückgabewerts der Methode. Wenn eine Methode deklariert ist   void, verwende das Rückgabeformular, das keinen Wert zurückgibt.

     

zurück;

    
SirPentor 04.03.2013 03:48
quelle

Tags und Links