0
A
回答
9
這是一種從內部類中訪問封閉類的隱式實例的方法。例如:
public class Test {
private final String name;
public Test(String name) {
this.name = name;
}
public static void main(String[] args) {
Test t = new Test("Jon");
// Create an instance of NamePrinter with a reference to the new instance
// as the enclosing instance.
Runnable r = t.new NamePrinter();
r.run();
}
private class NamePrinter implements Runnable {
@Override public void run() {
// Use the enclosing instance's name variable
System.out.println(Test.this.name);
}
}
}
參見爲「合格this
」表達的Java Language Specification section 8.1.3所有關於內部類和封閉的情況下,和section 15.8.4:
不限詞法包圍實例(§8.1.3)可以是通過顯式限定關鍵字this來引用。
讓
C
爲ClassName
表示的類別。令n是一個整數,使得C
是合格的此表達式出現的類的第n個詞彙封閉類。形式爲
ClassName.this
的表達式的值是這個的第n個詞彙封閉實例。表達式的類型是
C
。
1
從內部類您正在調用一個instante方法從TestClass的實例,它堅持它。
1
您可以使用來自內部類的類,它將引用外部類。
例如,如果你有一流的貓
public class Cat {
private int age;
private Tail tail;
public Cat(int age) {
this.age = age;
this.tail = new Tail();
}
class Tail {
public void wave() {
for(int i = 0; i < Cat.this.age; i++) {
System.out.println("*wave*");
}
}
}
public Tail getTail() {
return tail;
}
/**
* @param args
*/
public static void main(String[] args) {
new Cat(10).getTail().wave();
}
}
相關問題
- 1. 下面的代碼是什麼意思?
- 2. 下面的代碼是什麼意思
- 3. 下面的代碼是什麼意思?
- 4. 什麼是「=!」在下面的PHP代碼中是什麼意思?
- 5. 這段代碼片段中的「:」是什麼意思?
- 6. 這段JavaScript代碼片段是什麼意思?
- 7. 這段代碼是什麼意思...?
- 8. 這段Ruby代碼是什麼意思?
- 9. 這段代碼是什麼意思?
- 10. 這段代碼是什麼意思?
- 11. 這段代碼是什麼意思?
- 12. 代碼段是什麼意思?
- 13. 這段代碼是什麼意思?
- 14. 這段代碼是什麼意思?
- 15. 這段代碼是什麼意思?
- 16. 這段代碼是什麼意思?
- 17. 這段代碼是什麼意思?
- 18. 這段Perl代碼是什麼意思?
- 19. 這段代碼是什麼意思?
- 20. 這段代碼是什麼意思? $ .getJSON
- 21. 這段代碼是什麼意思?
- 22. 這段代碼是什麼意思?
- 23. 這段代碼是什麼意思?
- 24. 這段代碼是什麼意思?
- 25. 這段代碼是什麼意思?
- 26. 這段代碼是什麼意思?
- 27. 這段代碼是什麼意思?
- 28. 這段代碼是什麼意思?
- 29. 這段代碼是什麼意思?
- 30. 以下代碼是什麼意思?
喬恩,有沒有在C#中類似的事情? –
@AdamLee:否 - C#中的嵌套類不能像Java中的內部類一樣工作;沒有隱式的封閉實例。它們更像Java中的靜態嵌套類。 –