开发者社区> 问答> 正文

java内部类名字的作用域?

在《thinking in java》内部类有有这么一段话:

要想直接创建内部类的对象,你不能按照你想要的方式,去引用外部类的名字DotNew,而是必须使用外部类的对象来创建该内部类的对象。即:
DotNew dn = new DotNew();

DotNew.Inner inner = dn.new Inner();
这也解决了内部类名字作用域的问题,因此你不能声明(实际上你不能声明)dn.new DotNew.Innter();

这其中提到的内部类名字的作用域的问题是什么意思?

展开
收起
蛮大人123 2016-02-28 11:00:01 2524 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    这里主要指的是:
    由于内部类作用域必须依托明确的外部类,要在语法上明确内部类和外部类的关系吧。
    dn.new Inner();这种语法可以很明确的表示,是dn(这个外部类)去new了一个Inner()(内部类)对象,这个对象必须依托于dn这个对象。
    dn.new DotNew.Inner();如果用这种语法,那么 前面不管是不是dn都好,甚至可以换成xxx.new DotNew.Inner(); 甚至都可以换成 new DotNew.Inner();这样感觉这个Inner和 谁去 new的没有太大关系了。

    2019-07-17 18:49:26
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载