単純なオブジェクトPersonを持つとしましょう。それを識別するint IDを持つPersonです。 Personの新しいインスタンスごとに、そのPersonクラスのコンストラクタに新しいID値(+1)を与えるにはどうすればよいですか? (私はこれにDBを使用しません)オブジェクトを作成するときに、コンストラクタ内で変数を自動的に割り当てる方法
答えて
は静的AtomicInteger
を使用します。
final class Foo {
private static final AtomicInteger seed = new AtomicInteger();
private final int id;
public Foo() {
this.id = seed.incrementAndGet();
}
}
は、詳細についてはこちらをご覧ください:https://stackoverflow.com/a/4818753/17713
は静的変数を使用します。静的変数はクラスに直接バインドされず、クラスインスタンスにバインドされません。
例(C#で):
public class Person{
public static int Increment = 1;
public int ID;
public Person(){
this.ID = Increment;
Increment++;
}
}
このように、すべてのクラスのインスタンスは、固有のID-S(1増加)を有するであろう。
EDIT:このアプローチはスレッドセーフではありません。@ Muduの答えをご覧ください。
それはスレッドセーフではなく、パブリック変数を持つことをお勧めしません。また、Java命名規則に従うこともありません。 –
これはスレッドセーフではありませんが、複数のスレッドを使用していない限りは問題ありません。 –
この解決策は、 'Person'コンストラクタのスレッド型呼び出しを考慮しません。 –
あなたはすべてのインスタンスaccros共有されている
public class YourClass {
private static int generalIdCount = 0;
private int id;
public YourClass() {
this.id = generalIdCount;
generalIdCount++;
}
}
使用静的集計フィールドのようなものを使用する必要がありますPerson
:
あなたは現在のカウンタ値の静的変数を作成し、作成した際にIDにそれを割り当てることができます...
public class Person {
// same across all instances of this class
static int currentCounter = 0;
// only for this instance
int personId;
public Person(){
personId = currentCounter;
currentCounter++;
}
}
Lukaの提案と同様に、これはスレッドセーフではありません。 –
真。 @Muduのようなスレッドセーフな答えは関係なくすべてのコンテキストを許可しますが、自分のコンテキストに最も適した答えを選択することは、作者に任せています。ご意見をいただきありがとうございます。 – wattostudios
- 1. 自然な変数割り当てを作成する方法
- 2. 自動的に変数を割り当てるクラス
- 3. 動的変数にデータフレームを割り当てる方法
- 4. ボタンに日付を自動的に割り当てる方法
- 5. バッチスクリプトで変数に変数を動的に割り当てる方法は?
- 6. 親オブジェクトに動的オブジェクトを作成し、キーと値を割り当てる?
- 7. 複数のオブジェクトをRailsの別のオブジェクトに自動的に割り当てる
- 8. Marklogic - Xqueryで動的変数を割り当てる方法
- 9. コンストラクタ内の変数にインポートを割り当てる
- 10. オブジェクト関数を変数に割り当てる方法は?
- 11. Javascriptオブジェクト内のオブジェクトを動的に割り当てます。
- 12. データテーブルに列を動的に作成し、値を割り当てる方法は?
- 13. 変数にjqueryオブジェクトを割り当てると、正常に動作しない
- 14. 配列のオブジェクトに変数を割り当てる方法は?
- 15. 自動割り当てオペレータの作成
- 16. C++インタプリタで変数を動的に割り当てる最も良い方法
- 17. メンバー変数を一時的に割り当てる方法は?
- 18. revコマンドをシェル内の変数に割り当てる方法
- 19. onclickをキャンバス内の変数に割り当てる方法は?
- 20. ループ内の変数に値を割り当てる方法は?
- 21. スイッチループ内の配列に変数を割り当てる方法
- 22. ArrayBufferをscala内の変数に割り当てる方法
- 23. コンストラクタなしでクラスのオブジェクトにメンバ変数を割り当てる方法はありますか?
- 24. 静的割り当てと動的割り当てとの比較自動割り当て
- 25. 関数を割り当ててng-modelを動的に作成する方法はありますか?
- 26. エクスポートすると変数をモジュールに割り当てる方法
- 27. 登録時にユーザにsudomainを自動的に割り当てる方法
- 28. カーソルに変数を動的に割り当てる -
- 29. Pythonのforループに変数を動的に割り当てる
- 30. キーと値を動的に割り当てる方法
答えは他のすべての答えながら、スレッドセーフである(されています私の答えを含む正確な重複は私が最初だったが)そうではない。 –