2011-08-23 42 views
3

我有一個類實現一個數據結構中存儲比較的對象。 某些實例持有Longs和其他字符串。我怎麼幹預長/字符串的compareTo()?

我要算髮生的比較次數,在不改變數據結構類或應用程序太多。

一個自然的想法是實現一個新的類(說MyLong),其的compareTo()增加了一些統計計數器,然後再調用真正的compareTo()。然後應用更改存儲MyLongs而不是多頭,等等。這不工作,因爲我無法從長或字符串繼承。

可以這種方式進行合作?有沒有完成這個目標的另一種方式?

回答

2

「更喜歡繼承組成」

寫了一類新MyLong實現可比(可能延長數),幷包含一個長。然後讓它將所有呼叫傳遞給包含的Long,除了你想要的那些;對於那些增加計數器並將它們傳遞給Long的人。

0

如果您的項目準則允許,您的數據結構可以存儲實現接口的對象。自定義比較器可能允許您計算與給定比較器進行比較的總次數。只是一個想法。

1

你可以很早就用AspectJ來做到這一點。

你基本上會在實現類的compareTo方法中寫一個切入點,並在那裏添加一個計數器。

相關問題