0

嗨,我有以下代码。

if (SecurityContextHolder.getContext().getAuthentication() != null
                && SecurityContextHolder.getContext().getAuthentication()
                        .getPrincipal() instanceof User)

当我使用 pmd 检查时,它给了我一个警告:无需在 instanceof 之前检查 null。

Q1.) 你如何解决这个警告?- 如果我只是做安全性SecurityContextHolder.getContext().getAuthentication().getPrincipal()并且 getAuthentication 为空,那么我会得到 NPE(空指针异常)。

4

2 回答 2

2

我认为这是 PMD 中的一个错误,因为我面临同样的问题。也许这种模式的 XPath 表达式不够清晰。但它已经修复了。见 http://sourceforge.net/tracker/index.php?func=detail&aid=2317099&group_id=56262&atid=479921

于 2012-05-03T12:32:30.533 回答
1

如果不能使用固定版本的PMD,添加一个临时变量

... principal = null;
if (SecurityContextHolder.getContext().getAuthentication() != null)
   principal = SecurityContextHolder.getContext().getAuthentication()
                    .getPrincipal();
if (principal instanceof User) ...
于 2012-05-07T18:44:54.977 回答