with query nativas namednativequery example create consultas java android this

nativas - query native java



Usando "esto" con el nombre de clase (7)

Es confuso solo porque cuando usa " MainActivity.this ", parece que se está refiriendo a la clase y no al objeto. En realidad, cuando usas "this", siempre te estás refiriendo al objeto actual, como dice la documentación de java se:

https://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html

Dentro de un método de instancia o un constructor, esta es una referencia al objeto actual - el objeto cuyo método o constructor se está llamando. Puede hacer referencia a cualquier miembro del objeto actual desde un método de instancia o un constructor usando esto.

Es sintácticamente peculiar.

Estoy haciendo la programación de Android y estaba aprendiendo sobre Intents, cuando vi un constructor que, para mi mente entrenada en C #, parecía funky. La llamada fue:

Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);

Ambos parámetros son nuevos para mí. ¿Cómo está un ".this" estático fuera de un Nombre de clase? ¿Es esto algo de Java o algo de Android? Supongo que es lo mismo que decir "esto", ya que estoy en el contexto de CurrentActivity , pero no entiendo cómo se puede cancelar "this" con el nombre de Class. También. La ".clase" parece que se usa para la reflexión, con la que estoy familiarizado en C #, pero cualquier idea sobre esto sería bienvenida también.

Gracias.


La sintaxis "Classname.this" es para clases internas. Si desea hacer referencia a la instancia adjunta de tipo "Outerclass", entonces hágalo como "Outerclass.this".

NextActivity.class es simplemente el objeto Class que describe la clase "NextActivity".


Por lo general, puedes usar solo this . Pero, a veces this hace referencia a una clase interna ... así que, por ejemplo:

Button button = (Button)findViewById(R.id.ticket_details_sell_ticket); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // it will be wrong to use only "this", because it would // reference the just created OnClickListener object Intent login = new Intent(ClassName.this, Login.class); startActivityForResult(login, LOGIN_REQUEST); } });


Uno a la vez:

El primer constructo se llama calificado esto . El propósito de la sintaxis es el caso en el que se encuentre en una clase interna (generalmente una clase interna anónima) y desee hacer referencia a this de la clase externa en lugar de la clase interna (anónima). El "calificado esto" solo puede usarse en un contexto donde this sería ambiguo. La cita del JLS "Es un error en tiempo de compilación si la expresión ocurre en una clase o interfaz que no es una clase interna de la clase T o T en sí".

La segunda construcción se denomina class literal es la forma de referenciar el objeto Clase que representa ese tipo. Se puede usar en cualquier contexto.


ClassName.this se utiliza para hacer referencia a la instancia actual de una clase externa de una clase interna.


NextActivity.class en java significa typeof(NextActivity) en C #


<ClassName>.this

se usa en clases anidadas para referirse a la instancia actual de la clase adjunta, ya que la palabra clave `this ''hace referencia a la instancia de la clase de jerarquía.

void demoThis() { new java.lang.Object() { void demoThis() { System.err.println("`this'' is an instance of: " + this.getClass().getName()); System.err.println("`Siht.this'' is an instance of: " + Siht.this.getClass().getName()); } }.demoThis(); new NestedSiht().demoThis(); } public static void main(String [] args) { new Siht().demoThis(); }

}