通常一个普通类不允许被static,只有内部类才可以。这时被static的内部类可以直接作为一个普通类来使用,而不需创建外部类的实例。
public class StaticCls
{
public static void main(String[] args)
{
OuterCls.InnerCls oi = new OuterCls.InnerCls();
}
}
class OuterCls
{
public static class InnerCls
{
InnerCls()
{
System.out.println("InnerCls");
}
}
}
结果为:InnerCls
在上面的例子中,没有创建外部类的实例,直接创建了内部类innercls的对象。作者: 张禄宇 时间: 2013-6-13 15:06
这跟JAVA初始化有关。初始化过程开始时,初始化一次(只有一次),静态域或者变量,存储在栈中。
OuterCls.InnerCls oi = new OuterCls.InnerCls();
实际上,你已经访问了 OuterCls 作者: 十字路口 时间: 2013-6-14 00:48
亲,我没眼花的话。。看到的是你在main中只写了一条初始化内部类的语句吧。当然只有内部类初始化了,而且静态内部类是依赖于它所属的外部类的类的,不是它所属的外部类的对象,所以,只要有外部类,就可以实例化内部类。也就是可以不创建外部类的实例对象就可以初始化其内部类哈。