假设我们只有一个简单的对象 Person ,它具有 int ID 来标识它。如何在该类 Person 的构造函数中为 Person 的每个新实例提供新的 ID 值 (+1)?(我没有为此使用数据库)
问问题
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-s(递增 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 回答