Java 春色积存同擦除
我有自己的自定义存储库,但当我尝试重写/使用Crudepository时,这两种方法都有相同的擦除,但都没有重写另一种。请看下面 公共接口MyRepository扩展了Crudepository{ //S保存实体;//父方法 Person savePerson;//它接受这个 //Iterable可保存可替换实体;//父方法 Iterable saveAllIterable persons;//但不接受此选项。为什么我不能使用/覆盖此选项? //这会产生错误,两种方法具有相同的擦除,但都不会覆盖另一种 }Java 春色积存同擦除,java,spring,spring-boot,spring-data-jpa,spring-repositories,Java,Spring,Spring Boot,Spring Data Jpa,Spring Repositories,我有自己的自定义存储库,但当我尝试重写/使用Crudepository时,这两种方法都有相同的擦除,但都没有重写另一种。请看下面 公共接口MyRepository扩展了Crudepository{ //S保存实体;//父方法 Person savePerson;//它接受这个 //Iterable可保存可替换实体;//父方法 Iterable saveAllIterable persons;//但不接受此选项。为什么我不能使用/覆盖此选项? //这会产生错误,两种方法具有相同的擦除,但都不会覆盖
Java泛型通过称为擦除(erasure)的概念工作,这意味着所有泛型都会转换为。不幸的是,这是Java的一个限制,即确保它与Java5和泛型之前编写的代码向后兼容 编译器看到这两个方法具有相同的名称和参数。
只要将其中一个方法的名称从saveAll改为saveAllPeople或其他任何名称,它就会起作用。那么,这怎么会是fine Person savePerson;它具有相同的名称和参数。同样,person不是泛型。泛型被编译器包围,因为这些方法都是相同的1。可储蓄的可储蓄的人;2.可储蓄的可储蓄的人;3.可储蓄的可储蓄的人;人不是泛型的吗?S拯救实体;这里是基本方法。因此,问题的关键是人-储蓄者-储蓄者;作品但是可保存的可保存的实体;这不适用于可保存可编辑的人员/