2012-02-04 9 views
7

以下のJavaコードで見て...助けてください...

private synchronized void updateHtmlEditor(HTMLEditorKit editorkit, StringReader reader) 
    { 
    Runnable runnable = new Runnable(editorkit, reader) 
    { 
     public void run() { 
     try { 
      this.val$editorkit.read(this.val$reader, LinkParser.this.htmlViewEditor.getDocument(), LinkParser.this.htmlViewEditor.getDocument().getLength()); 

     } catch (IOException ex) { 
      Logger.getLogger(LinkParser.class.getName()).log(Level.SEVERE, null, ex); 
     } catch (BadLocationException ex) { 
      Logger.getLogger(LinkParser.class.getName()).log(Level.SEVERE, null, ex); 
     } 
     } 
    }; 
    SwingUtilities.invokeLater(runnable); 
    } 
+4

が、これは逆コンパイルコードです:

オリジナルのソースコードは次のようになりますか? – Natix

答えて

3

$記号は、内部クラス、合成フィールドおよびメソッドの生成された名前に対してJavaコンパイラによって使用されます。 Javaソースの識別子には有効ですが、推奨されません。

表示されるコードは、匿名の内部クラスの逆コンパイルされたコードのようです。メソッドupdateHtmlEditor内の匿名のRunnableの実装は、その周囲のメソッドのパラメータにアクセスします。そのアクセスを可能にするために、パラメータはfinalと宣言する必要があります。 Javaバイトコードでは、匿名クラスには外部メソッドLinkParser.this,val$editorkitおよびval$readerを含む3つの最終インスタンスの属性this$0と、引数をその属性に割り当てる3つの引数を持つコンストラクタがあります。

また、LinkParser.this.htmlViewEditorは、外部クラスの属性への参照であるLinkParserです。このサンプルでは、​​外部インスタンスLinkParser.thisへの明示的な参照は省略できます。

private synchronized void updateHtmlEditor(final HTMLEditorKit editorkit, final StringReader reader) 
    { 
    Runnable runnable = new Runnable() 
    { 
     public void run() { 
     try { 
      editorkit.read(reader, htmlViewEditor.getDocument(), htmlViewEditor.getDocument().getLength()); 
     } catch (IOException ex) { 
      Logger.getLogger(LinkParser.class.getName()).log(Level.SEVERE, null, ex); 
     } catch (BadLocationException ex) { 
      Logger.getLogger(LinkParser.class.getName()).log(Level.SEVERE, null, ex); 
     } 
     } 
    }; 
    SwingUtilities.invokeLater(runnable); 
    } 
+0

あなたのお手伝いをしていただきありがとうございます... – scamexdotexe

15
してください

それは特別なことを意味するものではありません。それは名前の一部を構成する単なる手紙です。まさにその前のl、または後でeのようです。

IdentifiersのJLSセクションを参照して、名前に許可されるものと許可されないものの詳細を確認してください。

1

変数名にドル記号を付けることはできますが、慣例では使用されません。 :私たちは本当にあなたが変数の宣言を提供しなかったので、私は推測言うことはできませんが、Javaで$は、例えば、あなたがそうのような何かを行うことができ、変数名の一部にすることができ、ここで http://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html

4

を見て

String str$rr = "Hello"; 
System.out.println(str$rr); 

Helloのようなものが印刷されます。

関連する問題