为什么Android Studio会在对象不能为空时指出该对象可能为空?

时间:2019-02-28 12:07:49

标签: android firebase android-studio google-cloud-firestore lint

这是我正在使用的代码:

ref.get().addOnCompleteListener(task -> {
    if (task.isSuccessful()) {
        DocumentSnapshot document = task.getResult();
        if (document.exists()) {
            Log.d(TAG, "DocumentSnapshot data: " + document.getData());
        }
    }
});

Android Studio突出显示错误的方法如下:

enter image description here

据我对此answer的理解:

  

成功完成的任务永远不会超过null的{​​{1}}。

如何在不检查无效性的情况下解决此问题?谢谢!

1 个答案:

答案 0 :(得分:4)

  

为什么Android Studio指示对象在对象时可能为null   不能吗?

因为皮棉不知道。 router.get('/backoffice/moderateur/organismes/export/:status', checkAuth, checkProfile('moderateur'), tryAndCatch(async (req, res) => { let codeRegion = req.user.codeRegion; let { status } = await Joi.validate(req.params, { status: Joi.string().allow(['all', 'active', 'inactive']).default('all'), }, { abortEarly: false }); let stream = await db.collection('accounts').find({ profile: 'organisme', codeRegion: codeRegion, ...(status === 'all' ? {} : { passwordHash: { $exists: status === 'active' } }), }).stream(); // const organismes = await db.collection('accounts').find({ // profile: 'organisme', // codeRegion: codeRegion, // ...(status === 'all' ? {} : { passwordHash: { $exists: status === 'active' } }), // }).toArray(); res.setHeader('Content-disposition', 'attachment; filename=avis.csv'); res.setHeader('Content-Type', 'text/csv; charset=iso-8859-1'); let lines = 'SIRET;EMAIL;NOM\n' res.write(lines); // organismes.forEach(organisme => { // lines += organisme.SIRET + ';' + // organisme.courriel + ';' + // comment.courriel + '\n'; // }); let handleError = e => { logger.error('An error occurred', e); res.status(500); stream.push(Boom.boomify(e).output.payload); }; stream .on('error', handleError) .pipe(transformObject(async organisme => { return organisme.SIRET + ';' + organisme.raisonSociale + ';' + organisme.courriel + '\n'; })) .pipe(encodeStream('UTF-16BE')) .pipe(res); // res.send(organismes); })); 通常可以返回null,这就是您看到警告的原因。 Lint执行基本检查,不知道有关Firebase API的详细信息。您甚至可以使用Java Core API重现此行为。

  

如何在不检查无效性的情况下解决此问题?谢谢!

如果您100%确信它永远不能为null,则可以使用

@SuppressWarnings(“ ConstantConditions”)

但是我不建议这样做,因为您不知道Firebase API将来是否会更改。也许Firebase的下一版本将允许返回null。