gpt4 book ai didi

Java:创建新实例

转载 作者:行者123 更新时间:2023-11-30 04:37:28 26 4
gpt4 key购买 nike

假设我想创建一个新实例 foo。

我会这样做:

SomeClass foo = new SomeClass();

现在假设对象已经到达终点(例如,就像游戏中碰撞的子弹)并且应该被处理并重新初始化。要重置对象,我可以这样做:

foo = new SomeClass();

或者这个

foo.reset();

注意:reset() 方法只会重置该实例中的所有变量。

哪个是更好的方法(当试图避免 GC 时)?第一个选项会创建一个新指针吗?

最佳答案

第一个选项创建一个新对象,并将旧对象作为垃圾收集(除非有其他实时引用)。

减少 GC 的一种策略是维护对象池。这只是当前没有使用但可重用的对象的集合。当您使用完一个对象后,调用一个方法将其返回到池中。当您需要一个新对象时,请在创建新对象之前调用检查池的方法;如果池不为空,它将从池中删除一个对象并重用它,而不是创建一个新对象。

public class SomeClass {
private static final int MAX_POOL_SIZE = . . .;
private static final ArrayList<SomeClass> pool = new ArrayList<SomeClass>();

public static SomeClass getInstance() {
int poolSize = pool.size();
if (poolSize > 0) {
return pool.remove(poolSize-1);
}
return new SomeClass();
}

public void recycle() {
// reset any fields
if (pool.size() < MAX_POOL_SIZE) {
pool.add(this);
}
}
. . .
}

当您需要新的SomeClass时,请调用SomeClass.getInstance()。使用完实例后,调用它的 recycle() 方法。

关于Java:创建新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13134860/

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