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中的静态嵌套类。 –