gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 08:42:36 24 4
gpt4 key购买 nike

我知道嵌套静态类的含义,但发现有时在决定何时在非静态嵌套类上声明它们会让人感到困惑。

主要是在实例化不是很好的情况下吗?

帮助您决定何时使用 static 修饰符的一般经验法则是什么?

最佳答案

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

A nested class is a member of its enclosing class. Non-static nested classes (inner classes) have access to other members of the enclosing class, even if they are declared private. Static nested classes do not have access to other members of the enclosing class.

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

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

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

以JDK为例,

public class LinkedList<E> ... {
...

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

}

这里,Entry 是一个静态嵌套类,因为它被 LinkedList 使用,因此作为顶级类没有任何意义> 仅上课。而且由于它甚至不使用 LinkedList 类的任何成员,因此ma​​king is static 更有意义

关于java - 什么时候在非静态嵌套类上声明嵌套静态类是个好主意?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38945225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com