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

Posted

技术标签:

【中文标题】从单独的类文件访问公共静态类的状态【英文标题】:Access public static class' state from a separate class file 【发布时间】:2013-10-22 01:45:24 【问题描述】:

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

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 方法且不更改 firstBar 的可见性的情况下从单独的类文件中访问 instanceBar 的状态。我该如何做到这一点?

例如,下面是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!
        

【问题讨论】:

向我们展示您尝试访问firstBar的代码。 这不是可见性问题。 z2.firstBar 是一个使用不当的表达式。尝试将其打印出来,或将值分配给某个局部变量。可以正常工作。 @RohitJain 为什么总是说这是一个可见性问题?我也去了long k = z2.firstBar,它仍然显示可见性。 这两个类在不同的包中吗? 【参考方案1】:

我猜你是说

class Foo<A>

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

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

public A firstBar;

【讨论】:

以上是关于从单独的类文件访问公共静态类的状态的主要内容,如果未能解决你的问题,请参考以下文章

Friend函数访问静态库中定义的类的私有成员

C ++ QT如何从QMainWindow布局访问QWidget的公共类成员

访问 aws s3 公共存储桶

如何将状态值从一个组件访问到位于单独文件中的其他功能(不是组件)?反应js

C++ - 如何从同一个类的静态函数访问一个类的私有成员?

Java访问权限-动力节点