网上搜一下静态内部类基本上都会有这么一段:“
static class Outer {
class Inner {}
static class StaticInner{}
}
Outer outer =newOuter();
Outer.Inner inner = outer.new Inner();
Outer.StaticInner inner0 = new Outer.StaticInner();
就是说非静态内部类,必须要通过外部对象的实例才能创建其实例,而静态内部类则是通过外部对象(而非对象的实例)
从内部累创建的角度这就很好的印证了:静态内部类不需要有指向外部类的引用。但非静态内部类需要持有对外部类的引用(外部类对象的实例)
如果是在外部对象的方法中用到内部类,原理是一样的。。。。。。上一下某个前辈的部分代码:
public class ObjectUtil {
public static <T> T convertObject(Object objFrom, Class<T> classTo) {
。。。。
FieldHolder holder = new FieldHolder();
。。。。
return obj;
}
static class FieldHolder {
。。。
}
}
可以看出都不需要写出外部类就可以实例化一个内部静态类(废话嘛)
但如果是非静态内部类,就需要外部类的实例对象,也就是:
FieldHolder holder = new ObjectUtil().new FieldHolder();``