除了使用抑制注释之外,如何删除 Spring CrudRepository 未经检查的转换

use*_*050 5 spring unchecked-conversion spring-data

这是我的代码:

public interface UserRepo extends CrudRepository<User, Long> {

    boolean exist(Long id);

    @Override
    User save(User user);

}
Run Code Online (Sandbox Code Playgroud)

在eclipse中,返回类型User有一个警告。

说明 资源路径 位置 类型 类型安全:类型 UserRepo 的 save(User) 的返回类型 User 需要未经检查的转换以符合类型 CrudRepository UserRepo.java 中的 S

我可否知道

  1. 返回类型未检查转换的 ecplise 警告是什么原因?
  2. 摆脱警告的正确方法是什么?

质量保证

dav*_*vey 5

正如 @dunny 在他的评论中指出的,这个语句在界面中没有任何意义,因为它已经在 org.springframework.data.repository.CrudRepository.save(S) 中实现

Eclipse 会给出此警告,因为它无法知道超级实现中的 S 在这种情况下是用户。

为了回答你的2.问题,你可以做

@Override
<S extends User> S save(S user);
Run Code Online (Sandbox Code Playgroud)

然后您就可以消除警告,但即使如此,提供此签名也没有更有意义。

只需跳过该语句,因为它已经存在。

  • 您可能想要这样做的一个原因是,例如,覆盖 save 方法的默认“@Transactional”行为,例如设置非默认“传播” (5认同)