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

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