2012-02-23 23 views
1

狡猾的 - 從實例方法我該如何解決這個聲納規則?

寫靜態字段這是它指的是行:

record.setEarliestTradeDate(earliestTradeDate = value.earliestTradeDate); 

更多的代碼:

Record record = getRecord(value.id); 
private static Date earliestTradeDate = null; 
public void setEarliestTradeDate(Date newValue) { earliestTradeDate = newValue; } 

它絕對不會造成任何形式的錯誤,但我想清除任何紅色標記代碼行的項目。

回答

1

這是一個提示,是可以改變的靜態

static Date earliestTradeDate 

在實例方法(即,不靜態)

public void setEarliestTradeDate 

這是(或可能是有問題的),因爲所有實例你的對象可以改變該變量的狀態。
您可以通過使方法變爲靜態來解決此問題,以便在靜態上下文中更改靜態變量。在我看來,這是正確的方法,因爲最早的Date是代碼中的某個固定點。

public static void setEarliestTradeDate 

或者使這個日期的實例變量:

private Date earliestTradeDate 

這也可能是爲singleton pattern的情況下。