函数不更新变量
Posted
技术标签:
【中文标题】函数不更新变量【英文标题】:Function doesn't update the variable 【发布时间】:2019-05-30 08:53:52 【问题描述】:我的函数是更新 ArrayList,但不更新布尔值,这很奇怪!
我只是不明白,或者它们都更新了,或者它们都没有。
private ArrayList<String> arrayList = new ArrayList<>();
private boolean isEmpty = true;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addNames(arrayList, isEmpty);
Log.d("status", arrayList.size() + " " + isEmpty);
private void addNames(ArrayList<String> names, boolean empty)
names.add("Moshe");
names.add("Noa");
names.add("Haim");
empty = false;
如何更新 isEmpty 变量? (this.isEmpty = false; 对我不好,我需要另一种方式)
【问题讨论】:
你修改了一个局部变量而不是全局变量... 【参考方案1】:您想将该字段设置为 arg,因此应改为 empty=false
this.isEmpty = empty
因为只是设置 empty = false 会将传入的参数 'empty' 设置为 false 而不是字段
【讨论】:
【参考方案2】:您不需要任何isEmpty
字段,您可以通过调用arrayList.isEmpty()
即时检查。
private List<String> arrayList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addNames(arrayList);
Log.d("status", arrayList.size() + " " + arrayList.isEmpty());
private void addNames(List<String> names)
names.add("Moshe");
names.add("Noa");
names.add("Haim");
查看here了解更多信息
【讨论】:
【参考方案3】:您使用了错误的变量。 empty
是只有方法作用域的方法参数。类范围变量是isEmpty
。在这种情况下,您不需要使用this
。
使用isEmpty = true;
在您的场景中,您甚至不需要在该方法中传递参数。这些变量是全局的,可以在不将它们作为参数传递的情况下进行访问。当你可以使用arrayList.isEmpty()
时,也不需要isEmpty
【讨论】:
以上是关于函数不更新变量的主要内容,如果未能解决你的问题,请参考以下文章
reactjs:一个不更新其变量的上下文组件函数; usestate 不能立即工作?