Java 如何为类的每个实例分配唯一的序列号?
我有两门课:Java 如何为类的每个实例分配唯一的序列号?,java,Java,我有两门课: 当我想得到(杰克,1)和(约翰,2)等等的时候,它会打印(杰克,2)和(约翰,2) 谁能告诉我怎么改变这个吗 谢谢 public class Worker{ String name; int number; private static int totalCount=0; public Worker(String N){ name=N; totalCount++; number = totalCount; }
当我想得到(杰克,1)和(约翰,2)等等的时候,它会打印(杰克,2)和(约翰,2) 谁能告诉我怎么改变这个吗 谢谢
public class Worker{
String name;
int number;
private static int totalCount=0;
public Worker(String N){
name=N;
totalCount++;
number = totalCount;
}
public String numberOfTime(){
return name +", "+ number;
}
}
试试这个
您没有为实例分配一个编号,它们的总计数应该与分配给每个实例的编号分开如果要为每个工作者设置一个ID,您应该这样做:
public class Worker{
String name;
private static int count=0;
private int id = ++count;
public Worker(String N){
name=N;
}
public String numberOfTime(){
return name +", "+ id;
}
}
对我来说,最好的方法是引入一个IdGenerator作为额外的类
public class IdGenerator {
private static int id =1;
public static int newId(){
return id++;
}
}
并将您的Worker
类更改为:
public class Worker{
String name;
private int id=0;
public Worker(String n){
name=n;
id = IdGenerator.newId();
}
public String numberOfTime(){
return name +", "+ id;
}
}
OO设计比将计数器集成到对象本身更好。静态变量属于类对象,而不是实例。为什么是“约翰2”?“约翰”只叫一次,我想给每个工人一个号码。第一个工人是1号,而最后一个工人是n号。然而,这里它给了我方法被调用的次数(总是我)。@lezaza这不算!我认为你需要改变这个问题的标题,因为它完全是误导性的代码>@MostafaEl Messiry不要具体询问您的答案是否被接受,但请记住OP标记最合适的答案;)@阿克塞尔呵呵。
public class IdGenerator {
private static int id =1;
public static int newId(){
return id++;
}
}
public class Worker{
String name;
private int id=0;
public Worker(String n){
name=n;
id = IdGenerator.newId();
}
public String numberOfTime(){
return name +", "+ id;
}
}