use*_*349 3 java dictionary spring-security
deviceId我使用下面的代码从 Spring Authentication 类中提取。
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import com.google.common.base.Optional;
public static Optional<String> getId() {
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
if (!auth.isAuthenticated()) {
return Optional.absent();
}
// I see a warning as "Type safety: Unchecked cast from Object to Map<String,String>"
Map<String, String> details = (Map<String, String>) auth.getDetails();
return Optional.of(details.get("deviceId"));
}
Run Code Online (Sandbox Code Playgroud)
如何克服此类型安全警告消息?我想避免添加Suprress Warnings标签。
类型安全:未经检查的强制转换从
Object到Map<String,String>
你不能。
由于Authentication简单地将 的返回值定义getDetails()为 an Object,因此您必须进行强制转换,尽管Map会在运行时检查类型,但仍然不能保证它映射String到String(因为类型擦除)。
这意味着您可能会ClassCastException在稍后使用时获得 a Map。这就是警告试图告诉您的内容,您可以通过添加 来接受对此的责任@SuppressWarnings。
| 归档时间: |
|
| 查看次数: |
9195 次 |
| 最近记录: |