2012-02-04 8 views
7

He buscado por todas partes tratando de averiguar cuál es el val $ EditorKit o el signo $ por debajo de los medios, pero sin suerte ... por favor ayuda ...

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

Es éste un código descompilada? – Natix

Respuesta

3

El signo $ es utilizado por el compilador de Java para los nombres generados de las clases internas, campos y métodos sintéticos. Es válido para identificadores en origen Java, pero desaconsejado.

El código que parece mostrar código descompilación de una clase interna anónima. La aplicación Runnable anónima dentro del método updateHtmlEditor accede a los parámetros de su método alrededores. Para hacer posible ese acceso, los parámetros deben declararse final. En el código de bytes Java, la clase anónima tiene tres atributos de instancia final, this$0 que contiene la instancia externa LinkParser.this, val$editorkit y val$reader que contiene los parámetros de método externo, y un constructor con tres argumentos, que asigna sus argumentos a los atributos.

Tenga en cuenta también que LinkParser.this.htmlViewEditor es una referencia a un atributo de la clase externa, LinkParser. En esta muestra, se puede omitir la referencia explícita a la instancia externa LinkParser.this.

El código fuente original es como la siguiente:

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

Gracias chicos por toda su ayuda ... – scamexdotexe

15

Esto no significa nada especial - es sólo una carta que forma parte del nombre, exactamente igual que el l, ni antes ni después del e.

Consulte la sección JLS en Identifiers para obtener más sobre lo que está y no está permitido en un nombre.

4

No podemos decir realmente supongo que ya no proporcionó la declaración de variables, pero en Java del $ puedo ser parte de un nombre de variable, por ejemplo, se puede hacer algo así:

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

Algo así se imprimirá en Hello.

Cuestiones relacionadas