Diciamo che abbiamo un nome di classe Home. Qual è la differenza tra Home.questo e Home.class? A cosa si riferiscono?Significato di .questo e .class in java
risposta
home.This
Home.this
riferisce all'istanza corrente della classe Home
.
Il termine formale per questa espressione sembra essere il Qualified this, come indicato nella Sezione 15.8.4 della Specifica del linguaggio Java.
In una classe semplice, dire Home.this
e this
sarà equivalente. Questa espressione viene utilizzata solo nei casi in cui è presente una classe interna e occorre fare riferimento alla classe che la include.
Ad esempio:
class Hello {
class World {
public void doSomething() {
Hello.this.doAnotherThing();
// Here, "this" alone would refer to the instance of
// the World class, so one needs to specify that the
// instance of the Hello class is what is being
// referred to.
}
}
public void doAnotherThing() {
}
}
Home.class
Home.class
restituirà la rappresentazione della classe Home
come oggetto Class
.
Il termine formale per questa espressione è class literal, come indicato nella Sezione 15.8.2 della Specifica del linguaggio Java.
Nella maggior parte dei casi, questa espressione viene utilizzata quando si utilizza reflection e ha bisogno di un modo per fare riferimento alla classe stessa anziché a un'istanza della classe.
Home.class
restituisce l'istanza di java.lang.Class<Home>
che corrisponde alla classe Home
. Questo oggetto ti permette di riflettere sulla classe (scopri quali metodi e variabili ha, quale è la sua classe genitrice ecc.) E per creare istanze della classe.
Home.this
è significativo solo se ci si trova in una classe annidata di Home. Qui Home.this
restituirà l'oggetto della classe Home
in cui è nidificato l'oggetto della classe nidificata.
- 1. significato di "questo [int index]"
- 2. Significato di! in Java sintassi
- 3. differenza tra java bean e java class?
- 4. questo e super in java
- 5. Deadlock Java in Class Loader
- 6. Significato 0_0 in Java 7
- 7. Qual è il significato di questo typedef?
- 8. significato di "questo" per una struct (C#)
- 9. qual è il significato della dichiarazione di tipo `Class of`?
- 10. Generazione di Dynamic Class Java
- 11. Object [] per Class [] in Java
- 12. Java setter e "questo"
- 13. Qual è il significato di "value class space is flat"?
- 14. Eager java class loading
- 15. Qual è il significato della sintassi di "` class header head? {Val_name: Type => `class body`}"
- 16. L'uso di "questo" in Java
- 17. java static class/variables
- 18. Chi può spiegare il significato di questo codice scala
- 19. Build.scala,% e %% simboli significato
- 20. Ereditarietà e casting: è buono questo java?
- 21. Significato di "*:" nella specifica del classpath java
- 22. Che cosa significa * | * questo significato nei CSS?
- 23. Blocco sincronizzato Java per .class
- 24. Serializzazione Java per Extended Class
- 25. classi java anonime e sincronizzazione e "questo"
- 26. Java Abstract Class And Generics
- 27. Dove usare "questo" in java?
- 28. Java Utility Class vs. Service
- 29. Significato e utilizzo di "_embedded" in HATEOAS
- 30. Significato di {*; } In ProGuard
Grande spiegazione! –
C'è un modo simile per farlo anche in C#? – moorara
@MiladIrannejad Non come NestingClass.questo. Vedi http://stackoverflow.com/a/185144/1986241 – Suzi