【问题标题】:How to create an auto increment every time an object is created and decrements when it is "destroyed"如何在每次创建对象时创建自动增量并在“销毁”时减少
【发布时间】:2018-01-03 15:15:23
【问题描述】:

当我创建类角色的实例时,我添加了对象派系。

//Constructor
Actor(String name, Race race, Faction faction){
    this.name = name;
    this.race = race;
    this.faction = faction;        
}

我希望每次 actor 使用对象 faction 时,对象派系内的自动计数都会增加,并且每次对象 actor 被销毁并递减。

public class Faction {

private String name;
private int membersNum;
private ArrayList<Faction> knowFactionList = new ArrayList<Faction>();
private ArrayList<Relation> factionRelationList = new ArrayList<Relation>();

  Faction(String name){
        this.name = name;        
   }  



public void addBattleMember(){
       membersNum++;
   }
   public void removeBattleMember(){
       membersNum--;
   }

我现在在 Faction Manager 类中使用此方法来创建列表,并在停止使用对象 actor 时手动减少。

 public void buildActiveFactionsOnBattle(ArrayList<Actor> actorList) {
    for (Actor act : actorList) {
        act.getFaction().addBattleMember();
        if (!activeFactionsOnBattle.contains(act.getFaction()))
            activeFactionsOnBattle.add(act.getFaction());
    }
}

【问题讨论】:

  • 最好的方法是静态变量,每次演员在构造函数中使用派系时递增它
  • “对象被破坏”是什么意思?你的意思是当你的应用程序完成了它,还是当它被 JVM 收集垃圾时?

标签: java auto-increment


【解决方案1】:

您需要在 JVM 中的用户空间下的某处挂钩逻辑。本机 JVM 代理能够做到这一点。

参考https://github.com/JigarJoshi/jvm-objects-inspector

【讨论】:

    【解决方案2】:

    “最好的方法是静态变量,并且每次递增 该演员在构造函数中使用派系的时间 – Fady Saad 1 分钟 以前”

    我会走这条路,因为它更容易。

    在班级的某个地方做一些事情,例如:

    static int fractionCount = 0;
    

    静态变量是这样的,例如分数对象的所有实例都引用相同的变量。

    从一个类更改静态变量将更改该类的所有实例的变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-22
      • 2021-06-26
      • 2014-02-07
      • 1970-01-01
      • 2012-12-10
      • 1970-01-01
      • 2012-11-18
      • 2015-08-26
      相关资源
      最近更新 更多