我有这门课
public class NInfo {
private int val;
private static int indx=1;
public NInfo(int val) {
this.val = val;
this.indx++;
}
}
我想在我创建的每个新对象中自动增加索引 1 这个代码不起作用,我应该修复什么?
我有这门课
public class NInfo {
private int val;
private static int indx=1;
public NInfo(int val) {
this.val = val;
this.indx++;
}
}
我想在我创建的每个新对象中自动增加索引 1 这个代码不起作用,我应该修复什么?
类的每个实例都共享一个静态字段。您需要将该值存储在特定于该实例的新字段中。
public class NInfo {
private int val;
private int index;
private static int indx=1;
public NInfo(int val) {
this.val = val;
this.index = indx++;
}
}
我会对您为什么要将这些索引添加到每个类感兴趣。
类的每个对象都具有类中定义的所有属性和方法,静态对象除外。静态变量和方法不是类实例的一部分。this.
运算符用于引用类的特定实例。要引用静态变量,您无需实例化对象。您可以使用 直接引用变量ClassName.variableName
。因此,每次在代码中创建变量的新实例时,indx 都会递增(从 2 开始,因为您已经对其进行了后递增)。
为了给一个对象分配一个新的递增值,递增 indx 并将它分配给一个实际上是类实例一部分的变量(即一个非静态变量)。
您忘记了赋值运算符操作。
NInfo.indx += 1;
编辑:
public class NInfo {
private int id;
private int value;
private static int index; // auto initialized to 0
public NInfo(int value) {
this.val = val;
this.id = NInfo.index += 1;
}
}
你应该像属性一样在构造函数中传递索引,并增加你创建的索引