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



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

我试图访问位于同一项目的内部包中的类中的受保护的最终变量,即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时,它告诉我,由于它受到保护,我无法访问它(正如我所预期的那样)。但我不希望它设置为公共的,这样其他人都可以访问它。此外,它在内部包中,所以内部类也不起作用。我有没有办法做到这一点,或者我被迫将其公开,并希望没有外部党派能够访问它?如有任何建议,我们将不胜感激非常感谢。

由于您正试图从另一个包访问它,我不这么认为。在Java中,包P1中的类无法说"这是一个变量,我希望包P2中的类可以访问它,但不能访问其他外部包"。如果您授予访问一个外部程序包的权限,则授予访问所有程序包的访问权限。也许您可以使用getter函数来实现这一点,该函数查看堆栈回溯,以查看调用方在哪个包中。。。但这似乎有些过头了。答案可能是重新思考设计。

最新更新