其他分享
首页 > 其他分享> > both methods have same erasure, yet neither overrides the other

both methods have same erasure, yet neither overrides the other

作者:互联网

both methods have same erasure, yet neither overrides the other

这段代码会报一个编译错误,both methods have same erasure, yet neither overrides the other。

这个错误的意思是,两个方法在类型擦除后,具有相同的原生类型参数列表,但是也不能覆盖另一个方法。

泛型类型在编译后,会做类型擦除,只剩下原生类型。如参数列表中的T类型会编译成Object,但是会有一个Signature。

尽管两个getValue方法具有相同的字节码,但是类型参数信息用 一个新的签名(signature) 属性记录在类模式中。JVM 在装载类时记录这个签名信息,并在运行时通过反射使它可用。

这就导致了这个方法既不能作为覆盖父类getValue方法的方法,也不能作为getValue方法的重载。

参考:
https://blog.csdn.net/u013269532/article/details/96436947
https://www.itdaan.com/blog/2017/09/03/4f61d84d5b385c833ac4df25e609fbe0.html

标签:both,erasure,methods,same,getValue,other,类型,yet
来源: https://www.cnblogs.com/ukzq/p/16128849.html