据我所知,通常在Java中,静态内容意味着您无法创建它的实例。但是如果是这样,为什么您要创建一个静态嵌套类的实例?难道这不会破坏静态事物的目的吗?
答案 0 :(得分:2)
据我所知,通常在Java中,静态内容意味着您无法创建它的实例。
那是不对的。 static
更“不属于任何特定实例,而是属于类型/类本身”。。
在封闭类的上下文中考虑静态类。静态类是static
成员,这意味着嵌套类未绑定到封闭类的任何特定实例。
这样做的含义是,您可以创建嵌套类的实例,而不必先创建外部类的实例。
答案 1 :(得分:0)
某些静态内容意味着您无法创建它的实例。
那不是事实。您不仅不能创建静态字段的实例,也不能创建非静态字段的实例,因为它是一个 field 而不是一个类。
static
仅意味着您不需要创建周围类的实例来访问它。 static
个成员属于该类本身,而不是该类的实例。
有了这个定义,静态类就很有意义了。
可以创建静态类的实例,而无需创建其外部类的实例:
class Outer {
static class Inner {}
}
Outer.Inner obj = new Outer.Inner(); // no Outer instances created!
非静态内部类的实例不能:
class Inner {
class Outer {
}
}
Inner inner = new Inner(); // I have to create this instance, otherwise it wouldn't compile
Inner.Outer outer = inner.new Outer();
答案 2 :(得分:0)
想象一下这样一种情况,您在嵌套的静态类中有一个方法,而您想调用该方法。
请参考以下代码段:
class OuterClass
{
// static nested class
static class StaticNestedClass
{
void display()
{
System.out.println("Static Nested Class Display Method");
}
}
static void display()
{
System.out.println("Outer Class Display Method");
}
public static void main(String[] args)
{
// accessing a static nested class
OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
nestedObject.display(); // This calls the display() method of the static nested class
OuterClass.display(); // This calls the display() method of outer class
}
}
如何在不创建静态嵌套类的对象的情况下访问它的display()。 Java允许创建静态嵌套类的实例,以便我们可以访问该类中定义的方法。
希望有帮助!!!