gpt4 book ai didi

java - 持有类实例的替代方案

转载 作者:行者123 更新时间:2023-11-30 09:08:52 25 4
gpt4 key购买 nike

我有一个对象,它本质上是一个数据结构,它具有需要访问“Main”类实例的方法(此类可以有多个实例)。我目前所做的是在构造函数中传递主类的实例,但这似乎有点笨拙。我也可以在方法调用中传递主类的实例,但这似乎增加了太多的复杂性,而且我很可能也会遇到同样的问题,因为它并不总是调用方法的主类。

我不是在寻找静态方法/变量,因为我正在对主类中的实例变量进行更改。

有没有更好的方法来实现这一点而不必在多个地方存储一个实例?

示例代码:

public class Main {
public Main() {
Class1 class1 = new Class1(this);
Class2 class2 = new Class2();

class1.doSomething();
class2.doSomething(this);
}

public void doSomethingElse() {
// There is a point to this... I swear...
}
}

public class Class1 {
private Main instance;

public Class1(Main instance) {
this.instance = instance;
}

public void doSomething() {
instance.doSomethingElse();
}
}

public class Class2 {
public void doSomething(Main instance) {
instance.doSomethingElse();
}
}

最佳答案

如果您担心内存使用或资源管理,考虑到即使您的数据存储类有 50 个对象,您也只需要 Main 类的 1 个实例,并将同一个实例发送到您所有的数据存储对象。您示例中的 Class1.instance 变量将指向与 Class49.instance 等相同的 Main 实例。这就是指针的工作方式,是什么让它们变得更好。

您可以让您的数据结构类扩展 Main 类,但除此之外(根据您的意愿排除静态),没有办法将实例作为参数发送给构造函数或方法。

关于java - 持有类实例的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23323061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com