5

这是我的代码:

public interface UserRepo extends CrudRepository<User, Long> {

    boolean exist(Long id);

    @Override
    User save(User user);

}

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

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

我可否知道

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

TQ

4

1 回答 1

3

正如@dunny 在他的评论中指出的那样,这个声明在接口中没有意义,因为它已经在 org.springframework.data.repository.CrudRepository.save(S) 中实现

Eclipse 给出了这个警告,因为它不知道超级实现中的 S 在这种情况下是一个用户。

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

@Override
<S extends User> S save(S user);

然后你摆脱警告,但即便如此,提供这个签名也没有多大意义。

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

于 2017-06-26T02:27:20.123 回答