是否可以创建一个只能由两个类访问的静态变量?

时间:2012-01-14 22:48:15

标签: java variables static

例如,假设我们有类A,B,C,D,E

现在A有一个公共的静态int变量

我希望这个变量只在A和B类中可见,而不是在C,D,E中可见。

是否可以在不使变量受保护并使用继承的情况下执行此操作?

6 个答案:

答案 0 :(得分:3)

将A类和B类放在自己的包中,并提供字段默认(包)可见性。 (不要给它publicprotectedprivate说明符。

答案 1 :(得分:3)

如果您不使用任何可见性修饰符,该成员将具有包级别可见性,您可以将A和B放在同一个包中,将C,D,E放在不同的包中。

然而,这里有一个明确的code smell ......

答案 2 :(得分:0)

你必须拥有静态吸气剂。在getter中,你可以抛出异常,捕获它,检查调用者然后授予访问权限或抛出访问被拒绝的异常。

除此之外,答案在于继承和其他众所周知的OO解决方案。

答案 3 :(得分:0)

不可能。如果B类只是A类,你可以使用内部类。

答案 4 :(得分:0)

您可以做的是将A和B放在一个单独的包中,并使该变量仅对包的成员可见。要做到这一点,您只需要放弃可见性关键字(例如公共或受保护的)。 Java中变量的默认可见性是包。

答案 5 :(得分:0)

aVar和bVar是公共的和静态的,但只能从A类和B类(和AB类)访问。

`

public class AB
{
          private static class A
           {
                       public static int aVar ;
            }


           private static class B
           {
                        public static int bVar ;
           }
}

`