gpt4 book ai didi

java - 如何在匿名类java中分配变量值

转载 作者:行者123 更新时间:2023-12-01 06:22:07 25 4
gpt4 key购买 nike

我想为列表变量分配一个结果值,但 lambda 中的变量必须是最终变量,如果是最终变量,则无法接收值。

public List<PersonalInfo> getAllPatient() {

List<PersonalInfo> mPersonalInfoList;
AppDatabase db = AppDatabase.getAppDatabase(mContext);
db.patientDao().getAll()
.flatMapIterable(patientlist -> {
List<PersonalInfo> personalInfoList = new ArrayList<>();
for (PersonalInfo p: patientlist) {
p.setColor(getRandomMaterialColor("400"));
personalInfoList.add(p);
}
return personalInfoList;
})
.toList()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(result ->
// error
mPersonalInfoList =result
);
return mPersonalInfoList;
}

最佳答案

问题在于您的方法在将值分配给变量之前返回。你可以用锁来解决这个问题。

试试这个:

public List<PersonalInfo> getAllPatient() {
final List<PersonalInfo> mPersonalInfoList = new ArrayList<>();
AppDatabase db = AppDatabase.getAppDatabase(mContext);
db.patientDao().getAll()
.flatMapIterable(patientlist -> {
List<PersonalInfo> personalInfoList = new ArrayList<>();
for (PersonalInfo p : patientlist) {
p.setColor(getRandomMaterialColor("400"));
personalInfoList.add(p);
}
return personalInfoList;
})
.toList()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(result -> {
synchronized (mPersonalInfoList) {
mPersonalInfoList.addAll(result);
mPersonalInfoList.notifyAll();
}
}
);

synchronized (mPersonalInfoList) {
try {
mPersonalInfoList.wait();
} catch (InterrupedException ex) {
ex.printStackTrace();
}
}

return mPersonalInfoList;
}

关于java - 如何在匿名类java中分配变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49586381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com