2017-07-27 7 views
1

クラスアクターのインスタンスを作成するときにオブジェクトファクションを追加します。 オブジェクトが作成されるたびに自動インクリメントを作成する方法と、「破棄する」ときにデクリメントする方法

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

私は毎回オブジェクト 派閥俳優オブジェクト派閥単位内部の自動カウントによって使用されていることを望んでいた、と毎回、オブジェクト 俳優は、それがデクリメント破壊されます。

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内で使用してリストを作成し、オブジェクトアクターが使用されなくなったときに手動で減らしています。

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

これを行う最善の方法は静的変数です。その俳優がコンストラクタでファクションを使用するたびにインクリメントします。 –

+0

「オブジェクトが破壊された」ということはどういう意味ですか?あなたのアプリが終了したとき、またはJVMによってガベージコレクションされたときを意味しますか? –

答えて

1

JVMのユーザー空間のどこかにロジックをフックする必要があります。ネイティブJVMエージェントはそれを実行できます。

は「それを行うための最善の方法は、静的変数であり、そしてそれをその俳優はコンストラクタで派閥を使用して、すべての 時間をインクリメント - Fadyサアド1分 前に」https://github.com/JigarJoshi/jvm-objects-inspector

0

を参照してください

私はこの道をはるかに容易にするだろう。

は、どこかのクラスのような何かを:静的変数は同じ変数を参照し、ため、すべてのインスタンスは分数オブジェクトを言うようなものである

static int fractionCount = 0; 

静的変数を1つのクラスから変更すると、そのクラスのすべてのインスタンスの変数が変更されます。

関連する問題