我有這個構造函數;構造函數被再次調用?
public UmlDiagramEntity(ReportElement reportElement, int pageIndex, Controller controller) {
super(reportElement.getX1(), reportElement.getY1(), reportElement.getX2(), reportElement.getY2());
setLayout(null);
this.pageIndex = pageIndex;
this.controller = controller;
reportElements = reportElement.getInternalReportElements();
components = new ArrayList<AbstractEntity>();
changedComponentIndex = -1;
PageListener p = new PageListener();
this.addMouseMotionListener(p);
this.addMouseListener(p);
setPage();
}
我在同一個類中有更新方法;
@Override
public void update(ReportElement reportElement) {
if (changedComponentIndex == -1) {
super.update(reportElement);
} else {
reportElements = reportElement.getInternalReportElements();
if (components.size() == reportElements.size()) {
if (!isCommitted) {
if (reportElement.getType() == ReportElementType.UmlRelation) {
if (checkInvolvementAndSet(changedComponentIndex)) {
anchorEntity(changedComponentIndex);
} else {
resistChanges(changedComponentIndex);
}
return;
}
}
..................goes on
當我跟着從調試器的流量,我看到,當更新被調用,在方法的某處,程序進入到構造和重新執行這一切(超,PageIndex的,等等)。爲什麼會去構造函數:D我沒有告訴它去那裏。
我可以做一個更深入的分析,看看它到了構造函數的地方,如果你想。順便說一句,changedComponentIndex
是一個靜態變量。
你可以顯示一個堆棧跟蹤什麼時候它再次進入構造函數? – rsp 2010-04-26 12:40:28
「如果你願意,我可以進行更深入的分析,看看它到達構造函數的位置。」我認爲這可能會幫助你回答你自己的問題...... – Thomas 2010-04-26 12:41:25
哦,我很抱歉,我現在想通了,這可能不是一個不尋常的電話,但我的錯誤。 – Halo 2010-04-26 12:43:46