1

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

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;
}

我的目标是在instanceBar不使用 get 方法且不更改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!
        }

}

4

1 回答 1

1

我猜你的意思是

class Foo<A>

既然你写了“A firstBar;” 您授予对变量的包访问权限:http: //docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

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

public A firstBar;
于 2013-10-14T13:36:49.217 回答