关于静态内部类的一些看法

来源:互联网 发布:mac ros 编辑:程序博客网 时间:2024/06/12 23:38

网上搜一下静态内部类基本上都会有这么一段:“

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();``