java 内部类的实例化

情况是这样的:

class A {

	public static void main(String[] args) {
	    // 使用B的有参构造方法实例化B,则需要这么写:new B().new C(),否则报错;这是为什么?有待研究,挺有意思
		B b = new B(new B().new C());
	}
	public final String TAG = this.getClass().getSimpleName();
}

class B {
    // 类B的实例变量c
	public C c;

	public B() {
		super();
	}

	public B(C c) {
		super();
		this.c = c;
	}
    // B类的内部类C    
	public class C {

	}
}

经过思考,还是遵循java基本语法的

1 c为类B的实例变量,所以必须以B的实例引用才可以

2 由此想到,将class C 改为static class C,则

B b = new B(new B().new C());

需要改为

B b = new B(new B.C());

此时,类C为类B的类变量

你可能感兴趣的:(java 内部类的实例化)