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?
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.
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;