Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在非静态嵌套类之上声明嵌套静态类什么时候是个好主意?_Java_Static Classes - Fatal编程技术网

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

Java 在非静态嵌套类之上声明嵌套静态类什么时候是个好主意?,java,static-classes,Java,Static Classes,我知道嵌套静态类的含义,但有时在决定何时在非静态嵌套类上声明它们时会感到困惑 主要是当实例化不是一个好的感觉时吗 帮助您决定何时使用static修饰符的一般经验法则是什么?您应该尽可能使用static字段、方法或类,并且代码仍然可以正确编译和工作 如果将代码设置为静态,则如果代码无法编译或无法工作,则不要将其设置为静态。如果可以,则应使用静态字段、方法或类,并且代码仍能正确编译和工作 如果将代码设置为静态,则代码无法编译或无法工作,请不要将其设置为静态。始终使用静态。如果需要从外部类访问成员,请

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

主要是当实例化不是一个好的感觉时吗

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

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

如果将代码设置为静态,则如果代码无法编译或无法工作,则不要将其设置为静态。

如果可以,则应使用静态字段、方法或类,并且代码仍能正确编译和工作


如果将代码设置为静态,则代码无法编译或无法工作,请不要将其设置为静态。

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


编辑:这里有一个很好的解释

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


编辑:这里有一个很好的解释

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

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

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

<>所以,基本上你可以并且应该考虑一个静态嵌套类作为一个顶层类,它嵌套在另一个顶层类中,只是为了方便打包。p> 因此,每当您使用嵌套类时,首先要使其成为静态的,然后查看是否需要访问任何实例成员,从而有机会使其成为非静态的

以JDK为例

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

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

}

这里,条目是一个静态嵌套类,因为这个类作为顶级类没有任何意义,因为它仅由LinkedList类使用。而且,由于它甚至不使用LinkedList类的任何成员,因此将其设置为静态更为合理。

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

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

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

<>所以,基本上你可以并且应该考虑一个静态嵌套类作为一个顶层类,它嵌套在另一个顶层类中,只是为了方便打包。p> 因此,每当您使用嵌套类时,首先要使其成为静态的,然后查看是否需要访问任何实例成员,从而有机会使其成为非静态的

以JDK为例

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

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

}

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

当您不希望类访问顶级类的非静态字段或实例字段,并且顶级类不需要它的实例时,可以使用静态类


除非不能使用非静态类,否则始终使用静态内部类。这使代码更简单,内存效率更高。

如果不希望类访问顶级类的非静态字段或实例字段,并且顶级类不需要它的实例,则可以使用静态类


除非不能使用非静态类,否则始终使用静态内部类。这使代码更简单,内存效率更高。

这个答案应该有帮助:这个答案应该有帮助:我认为这个问题只是问类,而不是字段和方法。我认为这个问题只是问类,而不是字段和方法。这是一个很好的经验法则;但也许更多的解释不会有什么坏处。这是一个很好的经验法则;但也许更多的解释不会有什么坏处。