[20-05-15][Thinking in Java 18]Java Inner Class 2 - .this & .new

Posted mirai3usi9

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[20-05-15][Thinking in Java 18]Java Inner Class 2 - .this & .new相关的知识,希望对你有一定的参考价值。

 1 package test_13_3;
 2 
 3 public class Outer {
 4     
 5     public Outer() {
 6         
 7         System.out.println("this is Outer");
 8     }
 9 
10     class Inner {
11         
12         public Inner() {
13             
14             System.out.println("this is Inner");
15         }
16         
17         public Outer getOut() {
18             // 如果需要生成对外部类对象的引用,可以使用外部类的名字后面加.this
19             // 这样产生的引用自动地具有正确的类型
20             return Outer.this;
21         }
22     }
23     
24     public void print() {
25         
26         System.out.println("this is Outer.print()");
27     }
28     
29 }

 

 1 package test_13_3;
 2 
 3 public class Test {
 4 
 5     public static void main(String[] args) {
 6 
 7         Outer outer = new Outer();
 8         // 想直接创建内部类的对象,不能引用外部类的名字,而必须使用外部类的对象来创建该内部类的对象
 9         // 同时也解决了内部类名字作用域的问题
10         Outer.Inner inner = outer.new Inner();
11         
12         inner.getOut().print();
13     }
14 }

 

结果如下:

this is Outer
this is Inner
this is Outer.print()

以上是关于[20-05-15][Thinking in Java 18]Java Inner Class 2 - .this & .new的主要内容,如果未能解决你的问题,请参考以下文章

[20-05-15][Thinking in Java 17]Java Inner Class 1 - Inner Class 2

[20-05-15][Thinking in Java 17]Java Inner Class 1 - Inner Class 2

Thinking In Java

Hacker Rank: Two Strings - thinking in C# 15+ ways

Thinking in Java & Writing in Python

Thinking in LINQ, Chapter 1, Thinking Functionally