想象一下,您必須包裝java.sql.ResultSet
的實例。你不能擴展它,因爲你不知道具體實現ResultSet
的具體類是什麼。您可以只聚合實例,實施ResultSet
並覆蓋所有方法。對象包裝的代碼生成工具
現在想象一下你想改變一個方法的行爲。所有其他重載方法只是一個很長的樣板是這樣的:
public void foo() {
wrapped.foo();
}
你知道任何自動代碼生成工具,可以爲我(無論是獨立的或納入普通的IDE)完成這項任務?
想象一下,您必須包裝java.sql.ResultSet
的實例。你不能擴展它,因爲你不知道具體實現ResultSet
的具體類是什麼。您可以只聚合實例,實施ResultSet
並覆蓋所有方法。對象包裝的代碼生成工具
現在想象一下你想改變一個方法的行爲。所有其他重載方法只是一個很長的樣板是這樣的:
public void foo() {
wrapped.foo();
}
你知道任何自動代碼生成工具,可以爲我(無論是獨立的或納入普通的IDE)完成這項任務?
Eclipse,用ResultSet作爲成員創建一個類,把光標放在這個成員上,然後選擇菜單「Source> Generate delegate Methods」。
檢查你想要的方式來產生的代表,它的完成。
任何體面的IDE應該能夠做到這一點。例如。在InteilliJ的想法:代碼 - >生成 - >委託方法
如果該類具有類實現/擴展的類型的成員字段此選項變得可用。
真的很可愛。我在Eclipse中沒有注意到的東西。謝謝! – gd1 2013-02-16 19:42:25
+1這真的很不錯,它會派上用場。 – arshajii 2013-07-23 20:32:38