2009-11-19 72 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”是你的实体的反向域名(如果你不有一个选择是独一无二的)。

相关问题