在《thinking in java》内部类有关链接到外部类的章节,有这么一段话:
要想直接创建内部类的对象,你不能按照你想要的方式,去引用外部类的名字DotNew,而是必须使用外部类的对象来创建该内部类的对象。即:
DotNew dn = new DotNew();
DotNew.Inner inner = dn.new Inner();
这也解决了内部类名字作用域的问题,因此你不能声明(实际上你不能声明)dn.new DotNew.Innter();
这其中提到的内部类名字的作用域的问题
是什么意思?
高洛峰2017-04-17 13:19:44
這裡主要指的是:
由於內部類作用域必須依托明確的外部類,要在語法上明確內部類和外部類的關係吧。
dn.new Inner();這種語法可以很明確的表示,是dn(這個外部類別)去new了一個Inner()(內部類別)對象,這個物件必須依託於dn這個物件。
dn.new DotNew.Inner();如果用這種語法,那麼前面不管是不是dn都好,甚至可以換成xxx.new DotNew.Inner(); 甚至都可以換成new DotNew.Inner( );這樣感覺這個Inner跟誰去new的沒有太大關係了。
當然這只是我看到這麼一句話然後去揣摩作者想表達的意思,不一定對。