【发布时间】:2016-08-04 02:31:41
【问题描述】:
这是我的代码:
private void foo(Bar bar) {
Session session = null;
Class entityClazz = null;
try {
entityClazz = Hibernate.getClass(bar);
if (bar != null) {
IntelliJ 会警告我上面的最后一条语句,并带有以下消息:
条件 'bar != null' 始终为 'true'。本次检查 分析方法控制和数据流以报告可能的情况 始终为真或假的表达式,其值是静态的 被证明是恒定的,以及可能导致可空性的情况 合同违约。
当我删除语句时:
entityClazz = Hibernate.getClass(bar);
警告将消失。
这里 IntelliJ 的想法是什么,是什么阻止了 bar 为空?
【问题讨论】:
-
我猜,因为如果
bar为空,Hibernate.getClass(bar)将抛出 NullPointerException,因此在这种情况下永远不会到达if。 -
@a_horse_with_no_name 我没有看到代码中抛出任何 NPE,但也许我错过了..
-
检查
Hibernate.getClass的参数是否有@NotNull。 -
BTW IntelliJ 有一个它“知道”应该是 @NotNull 的常用方法列表(不确定它存储此信息的位置,但想象一下它是某个 XML 文件)
-
@PeterLawrey 文档在这里,我没有看到任何 NutNull:docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/…
标签: java intellij-idea