一尘不染

清单如何 对具有BigInteger值的ArrayList的引用

spring-boot

此方法在JpaRepository中定义,并运行本机PostgreSQL查询。

List<Long> distributorIds = distributorRepository
.findDistributorIdsWithChildren(distributorId)

它毫无例外 地运行在运行时,我在返回的distributorIds ArrayList中看到BigInteger值,而不是Long值

那么,该错误如何发生?我是 说JAVA如何允许这样做 ?如果Java不检查这种类型的错误,那不是Java中泛型的问题。

注意:我还检查了Long和BigInteger的类型层次结构,并且没有子/超类关系。


阅读 263

收藏
2020-05-30

共1个答案

一尘不染

泛型类型检查是编译时功能。在运行时,所有类型信息都会丢失。请参阅“类型擦除”。例如,如果将使用非泛型集合的旧版API映射到使用泛型且需要强制转换集合的API,则您看到的行为很容易发生。不幸的是,如果该集合包含意外类型的对象,您将只能在运行时找到它。

2020-05-30