有什麼辦法可以實現StringReader
類,它允許在不改變其任何功能(方法)的情況下重複使用具有多個字符串的相同StringReader
(或類似功能)對象?可重複使用的Java StringReader
例如,這樣的一個Java類(比如,ReusableStringReader
)將是3210一個亞類中,與像
public void reset(String str);
一個額外的方法,該方法將在新的字符串值指定到內部StringReader
參數,以便對StringReader
的read()
方法的所有後續調用均使用新值。當想要限制應用程序使用的對象數量時(例如,通過對象每秒處理大量字符串的對象數量),這種「可重用性」非常方便。
通用的方式來實現,這將是:
- 繼承。 StringReader的所有內部狀態都存儲在私有實例變量中,所以這不是一個選項。
- 反思。通過反射重置
StringReader
對象的內部狀態。有4個實例變量可以設置,這意味着每個「重置(字符串)」調用4個反射調用(不是太高效)。 - 構圖。可以使用可重複使用的
StringInputStream
,然後通過InputStreamReader
創建Reader
對象,然後在StringReader
的子類內部使用Reader
來實現StringReader
類的完整API。雖然這是相當黑客。
更好的解決方案的任何想法?
請刪除「off-topic」限制。這是關於解決現實世界問題的潛在實施的非常有效的問題,在問題測試中已經非常清楚地描述了這個問題。我重寫了它以刪除術語「開源實現」,但即使這樣也不是必需的。這裏沒有什麼是「自以爲是」的。 – PNS