Java 如何创建列表<;长期>;对具有大整数值的ArrayList的引用

Java 如何创建列表<;长期>;对具有大整数值的ArrayList的引用,java,spring-boot,casting,spring-data,generic-collections,Java,Spring Boot,Casting,Spring Data,Generic Collections,此方法在JpaRepository中定义,并运行本机PostgreSQL查询 List<Long> distributorIds = distributorRepository .findDistributorIdsWithChildren(distributorId) List distributorId=distributorRepository .FindDistributorID(带子女)(distributorId) 它毫无例外地运行,在运行时,我在返回的distrib

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

List<Long> distributorIds = distributorRepository
.findDistributorIdsWithChildren(distributorId)
List distributorId=distributorRepository
.FindDistributorID(带子女)(distributorId)
它毫无例外地运行,在运行时,我在返回的distributorIds ArrayList中看到的是大整型值,而不是长值

这个问题也是如此:

那么这个bug是如何发生的呢?我的意思是JAVA如何允许这一点?如果Java不检查这种类型错误,那么Java中的泛型就不是问题了


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

泛型类型检查是编译时功能。在运行时,所有类型信息都将丢失。请参阅“类型擦除”。例如,如果将使用非泛型集合的遗留API映射到使用泛型并需要对集合进行强制转换的API,则很容易发生您看到的行为。如果该集合碰巧包含意外类型的对象,那么遗憾的是,您只能在运行时才能发现。

泛型类型检查是编译时功能。在运行时,所有类型信息都将丢失。请参阅“类型擦除”。例如,如果将使用非泛型集合的遗留API映射到使用泛型并需要对集合进行强制转换的API,则很容易发生您看到的行为。如果该集合碰巧包含意外类型的对象,遗憾的是,您只能在运行时才能发现。

泛型类型检查是编译时功能。在运行时,所有类型信息都将丢失。请参阅“类型擦除”。例如,如果使用非泛型集合的旧API映射到使用泛型的API,并且需要对集合进行强制转换,则上述行为很容易发生。请将此作为回答,以允许我接受。。非常感谢。我不记得了,因为当我没有看到非类型化的ArrayList时,这就是为什么我不能考虑强制转换问题:)泛型类型检查是编译时特性。在运行时,所有类型信息都将丢失。请参阅“类型擦除”。例如,如果使用非泛型集合的旧API映射到使用泛型的API,并且需要对集合进行强制转换,则上述行为很容易发生。请将此作为回答,以允许我接受。。非常感谢。我不记得了,因为我没有看到非类型的ArrayList,这就是为什么我不能考虑演员问题:)