您需要一个静态类成员来跟踪上次使用的索引.一定要实现一个复制构造函数:
class students
{
private static int next_id = 0; //
private int id; //
private String name;
public students(String name)
{
this.id = ++students.next_id;
this.name = name;
// ...
}
public students(students rhs)
{
this.id = ++students.next_id;
this.name = rhs.name;
// ...
}
public static void reset_counter(int n) // use with care!
{
students.next_id = n;
}
// ...
}
更新:正如@JordanWhite建议的那样,您可能希望使静态计数器成为原子,这意味着它可以安全地同时使用(即一次使用多个线程).为此,请将类型更改为:
private static AtomicInteger next_id = new AtomicInteger(0);
增量和读操作以及重置操作变为:
this.id = students.next_id.incrementAndGet(); // like "++next_id"
students.next_id.set(n); // like "next_id = n"