当包在其他包中使用时,限制对包专用变量的访问



xyz公司创建了一个包

com.xyz.utils.

在两个独立的文件中声明了两个类。它们有一些变量作为包私有。使得类a中的变量X可以在同一包的类B中使用。

package com.xyz.utils;
public class A{
int a=10;
}
package com.xyz.utils;
public class B{
int b = (new A()).a;
}

这两个文件被编译成一个jar并发送给客户。

客户将jar添加到他正在构建的项目中,并编写如下代码

package com.xyz.utils;
public  class customer_class
{
     int  Y = (new A()).a;
}

上面的代码正确吗?

我的问题是,我们如何使声明为包私有的变量在其他人使用包时不可见。

答案是"不"-你无法阻止他们这样做。

一般情况下无法完成。我认为,您可以在jar清单中密封包"com.xyz.utils",以告诉用户:作为最佳实践,不要在密封的包中定义他们的类。但是您不能限制库的用户这样做。

最新更新