このコードの「this.this $ 0」の意味は何ですか?それは何の略ですか?「this」を使用する理由はわかっていますが、「this.this $ 0」についてはわかりません
class MainActivity$1 implements TextWatcher
{
public void afterTextChanged(Editable paramEditable)
{
}
public void beforeTextChanged(CharSequence paramCharSequence, int paramInt1, int paramInt2, int paramInt3)
{
}
public void onTextChanged(CharSequence paramCharSequence, int paramInt1, int paramInt2, int paramInt3)
{
this.this$0.ChangeToNumber(paramCharSequence.toString());
}
}
-----------------------or ----------------------
class MainActivity$2 implements View.OnClickListener
{
public void onClick(View paramView)
{
this.this$0.startActivity(new Intent(this.this$0, about.class));
}
}
this.this $ 0それはに同じだMain.access $ 0これらの神秘的なシンボルは通常、匿名の内部クラスに対応します。Java VMはそれらを認識せず、最上位クラスについてのみ認識します。そのため、Javaコンパイラーは、内部クラスを機能させるためのいくつかの回避策を提供します。
ローカルクラスには、その包含クラスのインスタンスへの暗黙的な参照があります。'this$ 0 'は、逆コンパイルされたコードのこの参照に対応します。JVMは、クラスが他のクラスのプライベートメソッドにアクセスするのを防ぎます。そのため、コンパイラーは、インスタンスを囲むプライベートメソッドにアクセスするために、access $ 0などのいくつかの合成パッケージプライベートメソッドを生成します。
ジェネリックや共変の戻り値型などの合成メソッドで実装されるJava言語には、他にも多くの機能があります。
これらのリンクを確認することをお勧めします:Android用の逆コンパイルされたソースコードのデコード
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加