それを識別するintIDを持つ単純なオブジェクトPersonがあるとしましょう。Personの新しいインスタンスごとに、そのクラスPersonのコンストラクターで新しいID値(+1)を指定するにはどうすればよいですか?(私はこれにDBを使用しません)
質問する
320 次
5 に答える
9
静的を使用します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
于 2012-05-08T13:11:26.557 に答える
1
静的変数を使用します。静的変数は、クラスに直接バインドされるのではなく、クラスインスタンスにバインドされます。
例(C#):
public class Person{
public static int Increment = 1;
public int ID;
public Person(){
this.ID = Increment;
Increment++;
}
}
このようにして、すべてのクラスインスタンスは一意のID(1ずつ増加)を持ちます。
編集:このアプローチはスレッドセーフではありません。@Muduの回答を参照してください。
于 2012-05-08T13:11:22.117 に答える
1
あなたは次のようなものを使うべきです
public class YourClass {
private static int generalIdCount = 0;
private int id;
public YourClass() {
this.id = generalIdCount;
generalIdCount++;
}
}
于 2012-05-08T13:12:27.807 に答える
1
のすべてのインスタンスで共有される静的カウントフィールドを使用しますPerson
。
class Person {
private static int nextId = 1;
private final int id;
Person() {
id = nextId++;
}
}
于 2012-05-08T13:12:52.750 に答える
1
現在のカウンター値の静的変数を作成し、作成時に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++;
}
}
于 2012-05-08T13:13:11.100 に答える