5
有人問我電話採訪時以下問題我有:如何攔截超類的構造函數參數?
考慮下面的類定義:
public class ClassA {
public ClassA(int x) {
// do some calculationand initialize the state
}
}
和初始化使用隨機整數生成一個超類的子類。
public class ClassB extends ClassA {
public ClassB() {
super(StaticUtilityClass.someRandomIntegerValGenerator())
}
}
你需要攔截x的值(隨機INT由someRandomIntegerValGenerator生產)並將其存儲在ClassB的構件。 ClassA不能更改。 我最終不知道如何做到這一點,因爲ClassB構造函數中的第一個調用需要調用super()。直到super()被調用,ClassB沒有狀態,並且someRandomIntegerValGenerator生成的值不能被分配給任何ClassB成員。我唯一的方向是使用 ThreadLocal 但我認爲這應該是一些更簡單的解決方案。
有什麼想法?
的X是失去了這一點 – aviad 2012-02-18 22:07:33
@aviad:迷失在什麼時候? – 2012-02-18 22:07:52
不應該而是「這個」是「超級」嗎?只是爲了達到任務條件? – Gangnus 2012-02-18 22:09:40