我的问题很难用言语解释,所以我只是简单解释一下,希望你能理解我想说的话。 :)
我正在尝试访问位于同一项目内部包中的类内的受保护和最终变量 - 即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
时,它告诉我,由于它受到保护,我无法访问它(正如我预期的那样)。但我不希望它公开,以便其他任何人都可以访问它。此外, 位于内部包中,因此内部类也不起作用。我是否有办法实现这一目标,或者我被迫将其设置为公开并希望外部各方都不会访问它?任何建议将不胜感激。 :)谢谢!
答案 0 :(得分:1)
因为你试图从另一个包中访问它,所以我不这么认为。在Java中,类P1
中的类没有办法说"这是一个变量,我希望包P2
中的类可以访问,但没有其他外部包&# 34 ;.如果您授予对一个外部程序包的访问权限,则授予对所有这些程序包的访问权也许你可以通过一个getter函数来实现这一点,该函数查看堆栈回溯以查看调用者所在的包...但这看起来有点过分。答案可能是重新考虑设计。