Java: static inner class

Yao Yao on April 5, 2009

一般的内部类是不能有 static member 的,因为普通的内部类必须创建对象,不需要有 static member 只属于内部类本身,所以 static member 对普通内部类来说是没有意义也是不允许的。同样,static 内部类也是 static,所以一般的内部类中也不能有 static 内部类。

static 内部类可以有 static member,由于 static 内部类对象的创建不需要外部类对象,所以 static 内部类是无法通过 Outer.this 来连接到外部类对象的。所以根据 内部类:对外部类的访问及 .this 和 .new 中关于内部类访问访问外部类 member 的说明,在 static 内部类中要访问外部类的 member 应该避免重名的现象发生。

static 内部类表示这个内部类的定义是属于外部类的,但是 static 内部类的对象是可以有多个的,且可以直接创建。

接口中允许有内部类存在,且接口中的内部类默认为 public + static,所以一定是 static 内部类。接口中的内部类可以实现这个接口本身。如果想要为接口创建公用代码,使得接口的不同实现都能使用这些代码,可以使用接口中的内部类。

还有,可以使用 static 内部类来放置外部类的 main 测试方法。



blog comments powered by Disqus