不使用public访问不同包中的受保护类变量

时间:2014-09-13 01:43:12

标签: java

我的问题很难用言语解释,所以我只是简单解释一下,希望你能理解我想说的话。 :)

我正在尝试访问位于同一项目内部包中的类内的受保护和最终变量 - 即com.example.Main访问com.example.package.SomeClass.thisVarHere。这是我正在做的一个例子:

package com.example;
import some.package.Here;
import another.package.Here;
static import com.example.package.InsideClass.statVar;

public class MainClass {
    public void someMethod() {
        System.out.println("Value of statVar is: " + statVar);
    }
}

另一堂课:

package com.example.package;
import pa.cka.ge

public class InsideClass {
    protected static String statVar = "Test variable";
}

当我尝试访问statVar时,它告诉我,由于它受到保护,我无法访问它(正如我预期的那样)。但我不希望它公开,以便其他任何人都可以访问它。此外, 位于内部包中,因此内部类也不起作用。我是否有办法实现这一目标,或者我被迫将其设置为公开并希望外部各方都不会访问它?任何建议将不胜感激。 :)谢谢!

1 个答案:

答案 0 :(得分:1)

因为你试图从另一个包中访问它,所以我不这么认为。在Java中,类P1中的类没有办法说"这是一个变量,我希望包P2中的类可以访问,但没有其他外部包&# 34 ;.如果您授予对一个外部程序包的访问权限,则授予对所有这些程序包的访问权也许你可以通过一个getter函数来实现这一点,该函数查看堆栈回溯以查看调用者所在的包...但这看起来有点过分。答案可能是重新考虑设计。