首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么时候在非静态嵌套类上声明嵌套的静态类是个好主意?

什么时候在非静态嵌套类上声明嵌套的静态类是个好主意?
EN

Stack Overflow用户
提问于 2016-08-14 18:20:24
回答 4查看 884关注 0票数 1

我知道嵌套静态类的含义,但有时在决定何时对非静态嵌套类进行声明时会感到困惑。

主要是在实例化不是很好的时候吗?

一般的经验法则是什么帮助你决定何时使用静态修饰语?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-08-14 18:37:28

这是一个非常有趣的问题。我会尽力向你解释的。

嵌套类是其封闭类的成员。非静态嵌套类(内部类)可以访问封闭类的其他成员,即使它们被声明为私有。静态嵌套类不能访问封闭类的其他成员。

基本上,静态嵌套类与其顶级类的实例成员进行交互,就像任何其他类一样。

因此,基本上,您可以并且应该将静态嵌套类视为顶级类,该类嵌套在另一个顶级类中,只是为了便于打包。

因此,每当您使用嵌套类时,首先使其为静态,然后查看是否需要访问任何实例成员,从而有机会使其成为非静态的。

以JDK为例,

代码语言:javascript
复制
public class LinkedList<E> ... {
...

 private static class Entry<E> { ... }

}

在这里,Entry是一个静态嵌套类,因为这个类作为顶级类没有任何意义,因为它仅由LinkedList类使用。而且,由于它甚至不使用LinkedList类的任何成员,因此making是静态的,因此更有意义。

票数 3
EN

Stack Overflow用户

发布于 2016-08-14 18:26:52

总是用静态的。如果需要从外部类访问成员,请使用非静态

编辑:在这里可以找到一个很好的解释,key=squid%3AS2694|s=createdAt|asc=false

票数 2
EN

Stack Overflow用户

发布于 2016-08-14 18:25:38

如果可以的话,您应该使用static字段、方法或类,并且代码仍然正确编译和工作。

如果代码不编译或不工作,如果您使它是静态的,不要使它是静态的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38945225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档