Java静态类

时间:2020-02-23 14:36:52  来源:igfitidea点击:

Java不允许使用顶级静态类,例如,如果我们尝试像下面这样使类成为静态类。

Test.java

static class Test {

}

我们得到以下编译错误。

$javac Test.java 
Test.java:1: error: modifier static not allowed here
static class Test {
     ^
1 error

Java静态类

那么有可能在Java中有静态类吗?

是的,java支持嵌套类,它们可以是静态的。
这些静态类也称为静态嵌套类。

Java静态嵌套类只能访问外部类的静态成员。
静态嵌套类的行为类似于顶级类,并且仅出于包装方便而嵌套。

静态嵌套类的实例可以如下创建。

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

Java静态类示例

让我们看一下Java静态类的示例,看看如何在Java程序中使用它。

package com.theitroad.java.examples;

public class OuterClass {

	private static String name = "OuterClass";

	//static nested class
	static class StaticNestedClass {
		private int a;

		public int getA() {
			return this.a;
		}

		public String getName() {
			return name;
		}
	}
}

现在,让我们看看如何实例化和使用静态嵌套类。

package com.theitroad.java.examples;

public class StaticNestedClassTest {

	public static void main(String[] args) {
		
		//creating instance of static nested class
		OuterClass.StaticNestedClass nested = new OuterClass.StaticNestedClass();
		
		//accessing outer class static member
		System.out.println(nested.getName()); 
	}

}

Java静态类文件

Java静态类文件名为OuterClass $StaticClass.class
下图显示了我们的示例程序。

Java静态类的好处

我唯一想到的好处就是封装。
如果静态嵌套类仅与外部类一起使用,则我们可以将嵌套类保持为静态,以使它们保持紧密状态。