2012-06-30 9 views
21

En Effective Java dentro del elemento "Artículo 22: Favorecer clases miembro estáticas no estático sobre" Josh Bloch dice:¿Qué significa la construcción "calificada" en java?

Cada instancia de una clase miembro que no está asociado implícitamente con un encerrando instancia de la clase que contiene. Dentro de los métodos de instancia de una clase de miembro no estática, puede invocar métodos en la instancia adjunta u obtener una referencia a la instancia adjunta utilizando la construcción calificada.

¿Qué quiere decir con calificado This Construct?

+12

'EnclosingType.this' –

+1

En la terminología informática, un calificador, o identificador calificado, es un nombre (ruta de selección)' x.y.z'. Esto es anterior a Java. –

+1

[Lea todo al respecto en la fuente]] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.8.4) –

Respuesta

28

Sin el calificador, x() recurse. Con el calificador, se invoca el método de la instancia adjunta x().

class Envelope { 
    void x() { 
    System.out.println("Hello"); 
    } 
    class Enclosure { 
    void x() { 
     Envelope.this.x(); /* Qualified*/ 
    } 
    } 
} 
8

Una clase de miembro no estática tiene una referencia implícita a una instancia de la clase adjunta. El calificado Este término se refiere a la instancia de la clase adjunta. Si la clase adjunta es A, y la clase interna es B, puede abordar la referencia adjunta de A de B como A.this.

Cuestiones relacionadas