我打算扩展一个JSF渲染器。包名是oracle.adfinternal.view.faces.renderkit.rich
扩展类是否应该在相同的包结构中: oracle.adfinternal.view.faces.renderkit.rich 甚至是oracle.adfinternal.view.faces.renderkit.rich。[subpackage]
或者可以/我应该将它放入我自己的包中吗? com.company.renderkits。
如果我把它放入我自己的包名中,我认为包私有变量可能会受到干扰吗?
有什么想法吗?
答案 0 :(得分:4)
通常,您应该将扩展类放在自己的包中。
密码 - 私有访问级别应该由密切相关的类使用,可能由同一个开发人员编写,他们知道所有实现细节。如果扩展具有某些功能的类,则不是这种情况。
所有这一切,有些情况下你需要将你的课程放在超类的包中作为一种解决方法,但请记住,这是一个丑陋的黑客,并尽力避免它。
答案 1 :(得分:3)
您应该将该课程放入您自己的包中。不应该有任何编译/访问问题。超类已经看到了它需要看到的东西。
答案 2 :(得分:1)
如果我把它放入我自己的包名中,我认为包私有变量可能会受到干扰吗?
这是事实,但通常扩展类不应该担心这一点。即将扩展的类本来会使用 protected
修饰符。
答案 3 :(得分:0)
您不应该向其他实体(公司,个人)包添加内容。他们可以在以后创建一个具有相同名称(当然包含相同包)的类。他们也可以选择seal their JAR files,这会阻止您将类添加到他们的包中。
包的目的是为每个实体提供自己唯一的名称来创建类型。
在你的情况下,我会将包命名为:com.foobar.oracle.adfinternal.view.faces.renderkit.rich,其中“com.foobar”是您实体的反向域名(如果您没有选一个独特的东西。