我想封装一个包,以便无法访问项目外没有任何含义的类,属性和方法。但是,他们必须可以通过项目中的其他类访问,因此internal
不够 - 内部属性parent.foo.AClass
无法通过parent.bar.AnotherClass
访问。我是命名空间可以解决这个问题的印象,所以我想这:命名空间错误:“类定义的顶级”?
//Class in top level package, where we make our namespaces
package parent {
public namespace myproject;
internal namespace myproject_internal;
myproject class Top {
//code
}
}
//Some class not meant for use outside of the project
package parent.foo {
use namespace myproject;
use namespace myproject_internal;
myproject_internal class AClass {
//code
}
}
//Some other class that can be accessed outside of the project,
//but is in a different subpackage
package parent.bar {
use namespace myproject;
use namespace myproject_internal;
myproject class AnotherClass {
//code
}
}
然而,这引发在AnotherClass
在类定义编译器错误(myproject class AnotherClass
):“用户定义的命名空间属性只可用于类定义的顶层。“那是什么意思?命名空间是否意味着以其他方式使用?
感谢您的链接,这有助于吨。 根据软件包名称,我实际上没有使用父级 - 我只是在示例中将父级用作占位符名称。 – Monchoman45 2012-02-08 18:59:08
啊,好的。您可能希望在将来制作“mypackage” - 您永远不会知道谁会直接从您的示例中获得:) – weltraumpirat 2012-02-08 19:01:39