java - 从单独的类文件访问公共(public)静态类的状态

标签 java scope visibility class-visibility

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

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 的可见性。我该如何实现这个目标?

例如,以下内容表示不可见

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

}

最佳答案

我猜你的意思是

class Foo<A>

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

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

public A firstBar;

关于java - 从单独的类文件访问公共(public)静态类的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19361160/

相关文章:

java - Android 8.1 带通知 : Use of stream types is deprecated

java - 如何在 Java 中使用单个键的值列表形成 Hashmap

c++ - 在C++中,如果在方法内创建对象,方法结束后对象使用的内存会自动释放吗?

mysql - SQL - 用户定义的变量和客户端 session 混淆?

java - 我有两个水平 ScrollView 。如何一次显示一个并通过单击按钮在它们之间切换?

java - 即使没有实现接口(interface),程序也在编译

java - JBPM : couldn't deploy process archives : null

ruby-on-rails - validates_uniqueness_of ...限制范围 - 如何限制某人创建一定数量的条目

delphi - 私有(private)类型对所有人都可见?

java - 如何仅在第一次运行时调用项目