1

我正在学习静态嵌套类,我遇到了以下问题:

静态嵌套类在另一个类中使用 static 关键字或在该类的静态上下文中声明。

我无法理解的是当它说“或在该类的静态上下文中”时是什么意思。

如果可能的话,有人可以给我几个例子。我不明白“静态上下文”是什么意思。

4

3 回答 3

1

I think it means a class inside a static initializer:

public class OuterClass
{
    static
    {
        class InnerClass
        {

        }
    }
}
于 2012-06-14T04:09:21.923 回答
0

when they say static context means anything declared static, it can be nested inside a nested static class, enum or interface (enums and interfaces are static by default and can only be declared inside a top level context).

Also, you can declare inner classes within static methods , static declarations or static blocks, this referring to local classes or anonymous classes.

Regards

于 2012-06-14T04:08:42.750 回答
0

声明为静态的嵌套类称为静态嵌套类。任何静态嵌套类的对象的内存都是独立于任何特定的外部类对象分配的。静态嵌套类仅通过对象引用使用在其封闭类中定义的实例变量或方法。静态嵌套类与其外部类或任何其他类的实例成员交互,就像顶级类一样。

下面给出的是静态嵌套类的语法,它定义了在外部类中具有关键字 static 的静态嵌套类。

      class OuterClass {
           ....
         static class StaticNestedClass {
           ....
        }
         class InnerClass {
          .... }
       }

可以使用封闭类名访问静态嵌套类:OuterClass.StaticNestedClass

如果我们想创建一个静态嵌套类的对象,那么我们必须写下以下代码:

      OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();

这是一个静态嵌套类的例子,它处理访问内部类内部的外部类的实例。该示例创建了一个实例 x 值为 100 的“外部”类,然后我们在内部类方法检查中调用此值。除此之外,该示例还创建了另一个函数 check 并在其中调用内部类 check() 方法。当示例使用 Outer 类调用 check() 时,它显示了 Outer 类实例 x 的值。

这是示例的代码:

外部.java

    import java.lang.*;

    public class Outer{

     int x = 100;

    class Inner{

     int x = 200;

    public void check(){

    System.out.println("Value of x is: "+ Outer.this.x );

     }

     }

    public void check(){

         new Inner().check();

    }

     public static void main(String args[]){

       new Outer().check();

    }

     }

转到链接http://littletutorials.com/2008/03/06/static-nested-classes/

于 2012-06-14T04:31:25.010 回答