随记——内部类的实例化

  
  遇到的一个新问题,在外部类是实力化内部类的时候会出错:

1
2
3
4
5
6
7
8
9
10
11
class Out{

public static void main(String[] args){
In in = new In(); //这一行报错
}

class In{

}
}

  这个问题查了一下发现是外部类对内部类资源使用的问题。首先内部类可以无条件的使用外部类里的资源,这个是众所周知的,但是貌似没有遇到过外部类要使用内部类的资源的情况,今天也是由于一个“意外”发现的这个问题。查阅后破案了:
  外部类使用内部类需要通过一个外部类的实例,才能访问内部类
  所以修改后的方式应该是这样的:

1
2
3
4
5
6
7
8
9
10
11
class Out{

public static void main(String[] args){
Out out = new Out(); //创建外部类的实例
In in = out.new In(); //通过实例访问内部类
}

class In{

}
}

  后记。。。没啥感想,算一个冷知识吧。。