我經常發現我想要做這樣的事情:爪哇 - 替代迫使子類有一個靜態方法
class Foo{
public static abstract String getParam();
}
要強制美孚的一個子類返回的參數。
我知道你不能做到這一點,我知道你爲什麼不能做到這一點,但共同的選擇:
class Foo{
public abstract String getParam();
}
是不能令人滿意的,因爲它需要你有一個實例,它是不是有益的,如果你只想知道參數的值,並且實例化類是很昂貴的。
我很想知道人們如何避免使用「恆定接口」反模式。
編輯:我會添加一些更詳細的關於我的具體問題,但是這僅僅是當我想要做這樣的事情有幾個人從過去的當前時間。
我的子類是所有數據處理器和超類定義它們之間的通用代碼,使它們能夠獲取數據,分析它,並把它放在它需要去。 每個處理器都需要一些保存在SQL數據庫中的參數。每個處理器應能夠提供它需要的參數列表和默認值,以便通過檢查每個處理器類型的必需參數來驗證配置數據庫或將其初始化爲默認值。 讓它在處理器的構造函數中執行是不可接受的,因爲每個類只需要爲每個對象實例一次而不是每個對象實例一次,並且應該在系統啓動時完成,否則每個類的實例可能還不需要。
如果您已經調用了'Class.getName()',那麼爲什麼還需要獲取名稱? – 2012-08-13 16:34:17
這是一個例子。我可以說得到gigawidgets – 2012-08-13 16:39:07
有趣的問題。你有一個方便的具體例子嗎?這可能有助於挑起一些想法。斯卡拉有一個很好的方式來處理這個問題 - 它是一個對象和一個類的區別 - 可能不會幫助你很多。 – jeff 2012-08-13 17:05:17