首页 > 解决方案 > 操作您是其公共对象的不同类的公共变量

问题描述

我想从 Beta 类中的 Alpha 类访问一个公共变量,但编译器说该变量对于 Beta 类是未定义的。请注意,Beta 本身也是 Alpha 的公共对象。

public class Alpha
{
   public Beta b = new Beta();
   public Boolean theVariable = true;

   public static void main(String[] args) throws IOException 
   {
      Alpha alpha = new Alpha();
   }
}

public class Beta
{
   // Perform an action
   theVariable = false; //This step is considered invalid 
}

我已经尝试过制作一种方法来检索它和其他几件事,但我必须遗漏一些东西,因为我无法让它接受这一点。

标签: javaencapsulation

解决方案


如果 Beta 的实例只能由 Alpha 的实例访问,您可能应该实现内部类关系。

首先声明你的“共享”变量,然后是你的内部类。之后,您可以创建 Beta 实例并对“共享”变量执行任何操作。

public class Alpha
{
    public boolean theVariable = true;

    public class Beta
    {
       // Perform an action
       public void doSomething() {
           theVariable = false; // Should now be ok
       }
    }

    public Beta b;

    // constructor
    public Alpha() {
        b = new Beta();
    }

    // do something with Beta
    public void doSomethingWithBeta() {
        b.doSomething();
    }
}


推荐阅读