java - Java 中的全局对象?

标签 java

我有两门课:

public class A{
   int money;
   ArrayList<Item> boughtItems;
   .
   .
   public void addBoughtItem(Item item){
      .
      .
   }
   public void adjustMoney(int adjustAmount){
      money = money + adjustamount;
   }
}

还有另一个类:

public class B{
  ArrayList<Item> itemsForSale;
  .
  .
  public Item sellMeItem(Item item){
    .
    .
    return itemsForSale.get(...);
  }
}

现在,在主体中,我启动了 A 类的一个实例和 B 类的一个实例。 在 B 类中,每当我向他们出售元素时,我想更新购买的元素并实时调整 A 类实例的金额(这意味着,在 B 类的 sellMeItem 函数中。) 因此我认为我需要 A 实例是全局的。 如何从 B 类 sellMeItem 函数内部访问 main 中的 A 对象? (B类实例也在main中)

最佳答案

Therefore I think I need the A instance to be global.

并非如此,您可以简单地将 A 实例的引用传递给 B,例如通过构造函数:

class B {

    private A a;

    public B(A a) {
        this.a = a;
    }
}

然后你就可以在 B 中访问 a 了。在你的 main 中:

A a = new A();
B b = new B(a);

但是,这两个类如此密切相关这一事实可能意味着您在它们之间划分职责的方式并不是最佳的。

关于java - Java 中的全局对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13866155/

相关文章:

java - 使用 InputStreamReader 和 BufferedReader 缓慢读取 HTTP 响应?

java - 如何在 JavaFx 的可编辑 ComboBox 中获取输入值?

java - 从 WSDL 文件生成 Web 服务

java - Elasticsearch 扩展内部文档数组

java - 从电话号码中删除破折号

java - ReSTLet 的 GET POST DELETE 方法路由到同一函数

java - 允许在 DVD+R 上编译 DVD+R 上的 java 程序

java - 要求用户输入遵循字符串格式

java - Java 可变参数的错误 Eclipse "Correct Indentation"

java - 将 SAP netweaver 7.0 项目迁移到 7.4