情况
嗯,这个方法正在管理一个接受列表作为参数的转换,但看起来绝对不可扩展。
List<Long> array_list_data= new ArrayList<>();
public void get_Data() {
long0 = array_list_data.get(0);
long1= array_list_data.get(1);
long2= array_list_data.get(2);
}
之后,它将使用 long
字段创建一个不同的类。
问题
但是,如果我们必须将此数据扩展到此列表中的 100 个参数怎么办?
到目前为止我所做的是:
List<Long> array_list_data= new ArrayList<>();
public void get_Data() {
int k = 0;
long0= array_list_data.get(k);
long1= array_list_data.get(k++);
long2= array_list_data.get(k++);
}
为什么增加 k
不是正确的方法?
最佳答案
k++
执行后增量。换句话说,表达式的值是k
的原始值,然后k
递增。在调用该方法之前它仍然会递增,但作为参数传递的值是递增发生之前的值。换句话说,调用:
x = list.get(k++);
相当于:
int tmp = k;
k = k + 1;
x = list.get(tmp);
所以如果你确实有:
memory_version = array_list_data.get(k++); // Calls with 0, then k=1
mains_voltage_min = array_list_data.get(k++); // Calls with 1, then k=2
mains_voltage_max = array_list_data.get(k++); // Calls with 2, then k=3
那就可以了,相当于你的第一个代码。您当前的问题是您实际上已经:
memory_version = array_list_data.get(k); // Calls with 0, then k=0
mains_voltage_min = array_list_data.get(k++); // Calls with 0, then k=1
mains_voltage_max = array_list_data.get(k++); // Calls with 1, then k=2
但是,我建议,如果您使用集合作为字段对类中的数据进行建模,那么为每个值使用单独的字段可能会更好。 (当然,您可以通过从列表中提取数据来创建该类的实例,但这是另一回事。)
关于Java - 在发送到方法之前递增变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31746321/