从单独的类文件访问公共静态类'状态

时间:2013-10-14 13:17:25

标签: java scope visibility class-visibility

我在另一个公共类中有一个公共静态类,如下所示:

public class Foo<A> {
public static class Bar<A>{
    A firstBar;
    Bar(A setBar){
        this.firstBar=setBar;
    }
   }

public final Bar<A> instanceBar;

public Foo(A actualValue) {
    instanceBar = new Bar<A>(actualValue);
}

public Bar<A> getBar() {
    return instanceBar;
}

我的目标是在没有get方法且不更改instanceBar的可见性的情况下,从单独的类文件中访问firstBar的状态。我该如何做到这一点?

例如,以下内容为not visible

public class RetrieveFirstBar {
        public static void main(String[] args) {
             Foo z = new Foo(5l);
             Foo.Bar<Long> z2 = z.getBar();
             long k = z2.firstBar; //not visible!
        }

}

1 个答案:

答案 0 :(得分:1)

我猜你的意思是

class Foo<A>

因为你写了“A firstBar”;您提供对变量的包访问权限: http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

如果您在同一个程序包中有RetrieveFirstBar,则不会出现可见性问题。但是,如果你想从任何地方访问它,你应该写

public A firstBar;