如果创建类型为lion
的对象和类型为prey
的对象,我想这样做:
lion.eat(prey)
在。。。期间
lion.energy=energy+10,as an example.
prey=null
但是我也想完全摧毁逻辑生态系统中的猎物。
我了解垃圾收集器以及所有这些内容,而且您对垃圾收集器所说的所有事情都会在以后没有指向对象的情况下立即销毁它。
但是我正在用虚拟生态系统中的数百万个狮子和鹿实例实现遗传算法。现在如何消灭这些死动物?
请不要开令人讨厌的笑话,我厌倦了总是绊倒在垃圾收集器和物体谋杀的相同答案上,我想要一个解决方案的描述,该解决方案从狮子方法中逻辑上取消对猎物的引用。
public class prey
{
int energy=10;
}
public class lion
{
int energy=0;
public void eat(prey aDeer)
{
this.energy=aDeer.energy+this.energy; ///acumulate energy values from prey
aDeer=null;//destroys the object from ecosystem, which seems impossible to do in java
}
}
最佳答案
您已经有数以百万计的猎物,并且可能将它们存储在一个集合中。例如,ArrayList
。从ArrayList
中删除项目非常简单;调用其.remove()
函数。