2009-11-19 71 views
1

我計劃擴展一個JSF渲染器。包名稱是oracle.adfinternal.view.faces.renderkit.rich延長課程時,我應該保留包名嗎?

應該擴展的類是在相同的封裝結構: oracle.adfinternal.view.faces.renderkit.rich 甚至oracle.adfinternal.view .faces.renderkit.rich。[subpackage]

or can/should I put it into my own package? com.company.renderkits。

我想如果我把它放到我自己的包名中,包私有變量可能會受到干擾?

有什麼想法?

回答

4

一般來說,你應該把你的擴展類放在你自己的包裏。

包 - 私有訪問級別應由緊密連接的類使用,可能由同一開發人員編寫,他知道所有的實現細節。如果使用某些功能擴展類,情況並非如此。所有這一切說,有幾次你需要將你的類放在超類的包中作爲解決方法,但請記住,這是一個醜陋的黑客,並盡力避免它。

3

您應該將該類放入您自己的包中。不應該有任何編譯/訪問問題。超類已經看到了它需要看到的東西。

1

我想如果我把它放到我自己的包名中,包私有變量可能會受到干擾?

這是真的,但通常擴展類不應該擔心這一點。否則,待擴展的類將會使用修改器的protected修改器。

0

你不應該添加東西給其他實體(公司,個人)包。他們可以在晚些時候用相同的名字製作一個班級(當然還有相同的套餐)。他們也可以選擇seal their JAR files,這會阻止您將類添加到其包中。

軟件包的目的是爲每個實體提供自己獨特的namepsace來創建類型。

在你的情況下,我會命名該包類似於:com.foobar.oracle.adfinternal.view.faces.renderkit.rich其中「com.foobar」是你的實體的反向域名(如果你不有一個選擇是獨一無二的)。

相關問題