2015-12-25 4 views
-1

У меня есть исходный код, который дается below.But я попытался декомпиляции оригинального APK он дал мне это ключевое слово везде (как показано после этого ниже коды):Android-декомпилятор вставляет это ключевое слово везде в код?

public class Aboutt extends Activity { 

WebView web; 
ProgressBar progressBar; 

@Override 
public void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_aboutt); 

    web = (WebView) findViewById(R.id.webview01); 




    if (savedInstanceState != null) 
     web.restoreState(savedInstanceState); 
    else 
     web.loadUrl("http://www.google.com"); 
    progressBar = (ProgressBar) findViewById(R.id.progressBar1); 

    web.setWebViewClient(new myWebClient()); 
    web.getSettings().setJavaScriptEnabled(true); 
    web.getSettings().setBuiltInZoomControls(true); 


     } 

Но декомпилированный код дает мне:

public class Aboutt 
extends Activity { 
ProgressBar progressBar; 
WebView web; 


public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
this.setContentView(R.layout.activity_aboutt); 
this.web = (WebView)this.findViewById(R.id.webview01)); 
if (savedInstanceState != null) { 
this.web.restoreState(savedInstanceState); 
} else { 
this.web.loadUrl("http://www.google.com"); 
} 
this.progressBar = (ProgressBar)this.findViewById(R.id.progressBar1); 
this.web.setWebViewClient((WebViewClient)new myWebClient()); 
this.web.getSettings().setJavaScriptEnabled(true); 
this.web.getSettings().setBuiltInZoomControls(true); 
} 

Здесь он дает это везде. Будет ли это влиять на работу приложения или я могу использовать это в любом случае.

ответ

-1

this является ссылкой на текущий экземпляр класса. В основном это используется в случаях, когда есть похожие имена параметров и локальных переменных (они живут до тех пор, как метод) и переменных-членов (которые живут до тех пор, пока объект).

Таким образом, хотя это не хорошо, чтобы использовать его везде (не будет работать в статическом контексте, например) вы в безопасности с тем, что создано декомпилятор.

+0

Так что декомпилятор создал «это» правильно в моем коде ANdroid и может ли декомпилированный код Android работать полностью (кроме статического контекста)? @Jan –

+0

Да выглядит хорошо. Merry Xmas – Jan

+0

Merry Xmas @Jan и декомпилятор Android создает это ключевое слово в статическом методе или пропускает их –

1

Ключевое слово this относится к текущему экземпляру класса i.e объекта, к которому вызывается метод.

Обычно this опускается, потому что если у вас есть что-то вроде этого:

private int i; 
public int getI() { return i} 

каждый знает, что вы имеете в виду i. Если вы хотите добавить ключевое слово this, это будет просто более многословным и не повлияет на скомпилированный код.

Всякий раз, когда вы видите ссылку на код нестатического члена, вы можете добавить суффикс this. Как в приведенном выше примере, вы можете изменить i на this.i.

Однако this не работает в статическом режиме. Я имею в виду, что это будет НИКОГДА не отображаются в статическом контексте.

Но кроме этого, this в порядке, чтобы появиться где-нибудь еще.

+0

Так будет работать и для Android-приложения @Sweeper –

+0

Да, конечно! Android-приложение - это еще одна программа Java. @SanDarv – Sweeper

Смежные вопросы