Androidfinal变量是无变量?
Android final variable is no variable?
我有这样的空白:
public static void checkStateSignal(final int counter) {
for (int l = 0; l < counter; l += 10) {
if (counter - l < 9) {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
ArraySignal.LoggerStatus.get(counter) = separated[1];
}
},150);
}
}
}
其中 ArraySignal
是 class,Loggerstatus
是 Arraylist
。我在
上收到错误
ArraySignal.LoggerStatus.get(counter) = separated[1];
这是预期的变量。因此,出于某种原因,final 变量不是变量,并且 ArrayList.get
不想获取值位置而不是变量位置,这对我来说似乎非常不合逻辑,因为您可以获取常量。我错过了什么吗?也非常欢迎问题的解决方案。
这是因为您正在为 ArrayList 使用访问器 .get(index) 并且 return 一个值,您需要使用 .add(index,elem) 在给定处添加一个元素位置。选中此 link 环顾四周 Add object to ArrayList at specified index
你可以定义一个新的class:
Class NewRunnable extends Runnable
{
public int counter;
public NewRunnable(int _counter)
{
counter = _counter;
super();
}
}
然后在您的代码中使用它,例如:
handler.postDelayed(new NewRunnable(counter) {
@Override
public void run() {
String[] separated;
ArraySignal.LoggerStatus.get(counter) = separated[1];
}
},150);
ArraySignal.LoggerStatus.get(counter) = separated[1]
我认为问题在于,您正在尝试为函数设置值
我有这样的空白:
public static void checkStateSignal(final int counter) {
for (int l = 0; l < counter; l += 10) {
if (counter - l < 9) {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
ArraySignal.LoggerStatus.get(counter) = separated[1];
}
},150);
}
}
}
其中 ArraySignal
是 class,Loggerstatus
是 Arraylist
。我在
ArraySignal.LoggerStatus.get(counter) = separated[1];
这是预期的变量。因此,出于某种原因,final 变量不是变量,并且 ArrayList.get
不想获取值位置而不是变量位置,这对我来说似乎非常不合逻辑,因为您可以获取常量。我错过了什么吗?也非常欢迎问题的解决方案。
这是因为您正在为 ArrayList 使用访问器 .get(index) 并且 return 一个值,您需要使用 .add(index,elem) 在给定处添加一个元素位置。选中此 link 环顾四周 Add object to ArrayList at specified index
你可以定义一个新的class:
Class NewRunnable extends Runnable
{
public int counter;
public NewRunnable(int _counter)
{
counter = _counter;
super();
}
}
然后在您的代码中使用它,例如:
handler.postDelayed(new NewRunnable(counter) {
@Override
public void run() {
String[] separated;
ArraySignal.LoggerStatus.get(counter) = separated[1];
}
},150);
ArraySignal.LoggerStatus.get(counter) = separated[1]
我认为问题在于,您正在尝试为函数设置值