Skip to content

Instantly share code, notes, and snippets.

@a0000
Last active April 11, 2016 01:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save a0000/8646e2174bf6d06049276d3be42f12fa to your computer and use it in GitHub Desktop.
Save a0000/8646e2174bf6d06049276d3be42f12fa to your computer and use it in GitHub Desktop.

外部类1

public class Outer {
    // 内部类
    public class Inner {

    }
    // 1、外部类的非静态方法之外(成员变量)
    Inner inner = new Inner();

    // 2、外部类的非静态方法之外(静态变量)
    static Inner inner2 = new Outer().new Inner();

    // 3、外部类的静态方法
    public static Inner staticMethod() {
        Inner inner = new Outer().new Inner();
        return inner;
    }

    // 外部类的非静态方法
    public Inner nonStaticMethod() {
        Inner inner = new Inner();
        return inner;
    }

} 

外部类2

import com.a0000.Outer.Inner;

public class Outer2 {
    // 5、建议这样写,这样写层次很明显(Inner是Outer的内部类)
    public Outer.Inner inner = new Outer().new Inner();
    // 4、导入了Inner包就可以这样写了,但是不能很直观的看出来Inner是Outer的内部类
    public Inner inner2 = Outer.staticMethod();
}

他那个写的不对,前3个地方是 (内部类所在的外部类)的非静态方法之外的位置创建内部类的对象

第4个地方是 其他外部类的非静态方法之外的位置创建内部类的对象

第5个地方才是他建议的写法

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment