overrided方法编译错误

  • 问题描述:

在实现类中的某一或某几个Override方法发生编译错误如下:

Name clash: The method put(String) of type XXXServiceImpl has the same erasure as put(String) of type XXXService but does not override it

当去掉@Override标签之后,编译错误如下:

The method put(String) of type XXXServiceImpl must override or implement a supertype method

而且并非所有的重写方法会报编译错误,而且报错的方法和没报错的方法之间找不出indicated differences,非常的蛋疼。。。

  • 问题原因:

XXXService(接口)中有编译错误,引用了一个已删除的并且不需要的类。

扫描二维码关注公众号,回复: 807547 查看本文章
  • 解决方案:

删除接口XXXService中不存在的引用,XXXServiceImpl编译成功。

这个错误犯的很脑残,但确实困扰了我一个小时,因为接口和实现类不在同一个包里,而且注意力全都集中在实现类的编译错误上,再加上编译器的报错也不太友好,所以没发现接口有问题。有时确实会有这样的遭遇,一个问题花了很长时间没法解决,其实问题并不在问题本身,而是由其他问题引发,这个时候先从当前问题跳出来看一下,往往能找到原因。

猜你喜欢

转载自kane-xie.iteye.com/blog/2222838