Java外部类的构造方法中声明内部类的问题

RT,我在写代码时碰到一个以下问题:

1.类A 的无参构造方法中 调用 有参(参数类型为B)构造方法,出现了以下问题.

2.1.若B为A的内部类,则编译出错

2.2.若B为普通类,则无问题.

代码如下:


内部类:

public class A1 {
	B1 b;

	public A1() {
		this(new B1());//此处编译出错
	}

	public A1(B1 b) {
		this.b = b;
	}

	public class B1 {
	}
}

普通类:

public class A2 {
	B2 b;

	public A2() {
		this(new B2());//此处没有问题
	}

	public A2(B2 d) {
		this.b = d;
	}
}

class B2 {
}


有什么解决办法吗?

1. 把内部类B改成 static

2.因为一些原因,内部类B不能是static,有什么别的解决办法吗?


补充:


内部类这么写也没问题:

public class A1 {
	B1 b;

	public A1() {
		b=new B1();//这么写没问题.
//		this(new B1());
	}

	public A1(B1 b) {
		this.b = b;
	}

	public class B1 {
	}
}

参数资料:

http://blog.csdn.net/shuixin536/article/details/8989776

http://stackoverflow.com/questions/2741066/why-does-a-sub-class-class-of-a-class-have-to-be-static-in-order-to-initialize-t

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章