我正在学习静态嵌套类,我遇到了以下内容:
静态嵌套类在具有static关键字的另一个类内或在该类的静态上下文中声明。
我无法理解的是,当它说“或在该类的静态环境中”时,它是什么意思。
如果可能,有人可以给我一些例子。我不明白它是什么意思“静态背景”。
答案 0 :(得分:1)
我认为这意味着静态初始化程序中的一个类:
public class OuterClass
{
static
{
class InnerClass
{
}
}
}
答案 1 :(得分:0)
当他们说静态上下文意味着任何声明为静态的东西时,它可以嵌套在嵌套的静态类,枚举或接口中(枚举和接口默认是静态的,只能在顶级上下文中声明)。
此外,您可以在静态方法,静态声明或静态块中声明内部类,这指的是本地类或匿名类。
此致
答案 2 :(得分:0)
声明为static的嵌套类称为静态嵌套类。对任何静态嵌套类的对象的内存是独立于任何特定外部类对象分配的。静态嵌套类仅使用对象引用在其封闭类中定义的实例变量或方法。静态嵌套类与其外部类或任何其他类的实例成员交互,就像顶级类一样。
下面给出静态嵌套类的语法,该类定义在外部类中具有关键字static的静态嵌套类。
class OuterClass {
....
static class StaticNestedClass {
....
}
class InnerClass {
.... }
}
可以使用封闭的类名来访问静态嵌套类: OuterClass.StaticNestedClass
如果我们想要创建静态嵌套类的对象,那么我们必须写下以下代码:
OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
以下是静态嵌套类的示例,该类用于访问内部类中外部类的实例。该示例创建一个“Outer”类,其实例x值为100,之后我们在内部类方法检查中调用此值。除此之外,该示例还创建了另一个函数检查并在其中调用内部类check()方法。当示例使用Outer类调用check()时,它显示外部类实例x的值。
以下是示例的代码:
Outer.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/
链接