¿Cómo apunta el puntero this
al objeto en sí? ¿Es una implementación de Java o es una implementación del compilador?¿Cómo se implementa la palabra clave "this" de java?
Respuesta
Bueno, si usted está interesado, por qué no mirar el código de bytes generado por el compilador
class HelloWorld
{
private String hello = "Hello world!";
private void printHello(){
System.out.println (this.hello);
}
public static void main (String args[]){
HelloWorld hello = new HelloWorld();
hello.printHello();
}
}
Compilar utilizando
% HelloWorld.java JAVA_HOME%/bin/javac
Obtener bytecode con
javap -c HelloWorl d
salida de editar añadir
enter code here
HelloWorld();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()
4: aload_0
5: ldc #2; //String Hello world!
7: putfield #3; //Field hello:Ljava/lang/String;
10: return
public static void main(java.lang.String[]);
Code:
0: new #6; //class HelloWorld
3: dup
4: invokespecial #7; //Method "<init>":()V
7: astore_1
8: aload_1
9: invokespecial #8; //Method printHello:()V
12: return
}
Suena como una pregunta filosófica. No estoy seguro de que haya una implementación de Java.
this
se define en el JLS y es una palabra clave en Java y la compilación tiene que cumplir con ese estándar. Cuando se tiene un método como
object.method(args)
lo que se llama en realidad en el código de bytes es un método que se parece a
method(object, args);
donde this
es el primer argumento.
A nivel JVM, los parámetros no tienen nombres y el JIT podrían optimizar el argumento de distancia si no es utilizado en realidad.
:) No Peter. Me rebotó en la entrevista con la pregunta. Thot de echarle un vistazo. – mavrav
A veces se obtienen preguntas mal redactadas en las entrevistas. Puede ser una señal de que el entrevistador tampoco sabe la respuesta, y solo quiere saber lo que usted dice. –
¡A menos que la publicación implique que trabajes en una implementación de JVM, es una pregunta terrible! – vaughandroid
En el bytecode de JVM, la variable local (básicamente register 0) apunta al objeto actual cuando se invoca un método. El compilador simplemente usa this
como un alias para la variable local 0.
Supongo que la respuesta es que el compilador implementa this
.
- 1. Java: cuándo utilizar la palabra clave 'this'
- 2. Utilizando la palabra clave 'this' en los constructores de Java
- 3. Uso de la palabra clave "this" en java
- 4. La palabra clave 'this' como propiedad
- 5. ¿Cómo se implementa la palabra clave 'is' en Python?
- 6. ¿Cuál es el significado real de la palabra clave "this"?
- 7. Significado de la palabra clave "this" en jQuery Vs MVC
- 8. entendimiento palabra "this"
- 9. ¿Cuándo debería usar la palabra clave "this" en C++?
- 10. ¿Cómo se diferencia el valor de retorno de SessionContext.getBusinessObject() de 'this' palabra clave en el bean?
- 11. Usando un parámetro ref con la palabra clave this?
- 12. "this" frente a la palabra clave "element" en X ++
- 13. palabra "this" en C++
- 14. Gson Java palabra clave reservada
- 15. ¿Se puede usar la palabra clave "this" con los tipos de valor?
- 16. Jquery 'this' palabra clave y filtros básicos del selector
- 17. El uso de esta palabra clave Java
- 18. ¿Por qué la palabra clave 'this' no se puede usar en un método estático?
- 19. Java - utilizando la palabra clave 'super'
- 20. palabra clave foreach en java?
- 21. ¿Hay alguna palabra clave en Java que sea similar a la palabra clave 'AS' de C#
- 22. "this" palabra clave en métodos de evento cuando se utiliza el objeto prototipo JavaScript
- 23. ¿Cómo puedo usar correctamente la palabra clave volátil en Java?
- 24. C# Cuándo debe usar el palabra "this"
- 25. anidada sincronizada palabra clave
- 26. ¿Para qué es la palabra clave nativa en Java?
- 27. ¿Cuál es el fundamento del comportamiento de la palabra clave "this" en JavaScript?
- 28. ¿Cómo se implementa Super en Java?
- 29. ¿Puedo forzar el uso de la palabra clave 'this' en C# .NET?
- 30. ¿Cómo se implementa la propiedad de dependencia?
Aquí es lo que podemos obtener más información sobre 'esto'. http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#251519 – kosa