Java语言中的静态类

在写Android程序的时候,系统会自动生成一个R.java,这个类中使用了大量的静态类,对一个C++程序员来说,这是个新鲜事物,下面来看看这个神奇的玩意。

静态内部类的语法

public class ExternalClass {
    public static final class InnerClass {
        //...
    }
} 

静态内部类的作用

一般情况很少会用到静态类,但它也并不是一无是处,不然Java也就不会引入这个语法了。静态内部类的一个最大的用处出现在对Java类的测试中,例如:

public class Test {	
	public static void main(String[] args) {
		Other.Test.printx();
	}
}

class Other{
        static class Test {
              Other o = new Other();
              o.printx();       
        }	
	
	public void printx() {
		System.out.println("Other class");
	}
}

静态内部类与非静态内部类

  非静态内部类 静态内部类
修饰符   static
声明静态成员 不能
访问外部类成员 能访问外部类的所有成员 只能访问外部类的静态成员
跟外部类实例的关系 绑定外部类 不需要绑定外部类

Android的R类正是使用了“静态内部类不需要绑定到外部类”这条属性,使得我们可以方便的直接引用R类中常量。