您好我有以下代码。
if (SecurityContextHolder.getContext().getAuthentication() != null
&& SecurityContextHolder.getContext().getAuthentication()
.getPrincipal() instanceof User)
当我用pmd检查时它会给我一个警告:不需要在instanceof之前检查null。
Q1。)你如何解决这个警告?
- 如果我只是执行安全性SecurityContextHolder.getContext().getAuthentication().getPrincipal()
并且getAuthentication为null,那么我将获得NPE(空指针异常)。
答案 0 :(得分:2)
我认为这是PMD中的一个错误,因为我遇到了同样的问题。也许这种模式的XPath Expression不够清晰。 但它已经修复了。看到 http://sourceforge.net/tracker/index.php?func=detail&aid=2317099&group_id=56262&atid=479921
答案 1 :(得分:1)
如果无法使用固定版本的PMD,请添加临时变量
... principal = null;
if (SecurityContextHolder.getContext().getAuthentication() != null)
principal = SecurityContextHolder.getContext().getAuthentication()
.getPrincipal();
if (principal instanceof User) ...