Java中的泛型是通過(guò)類型擦除實(shí)現(xiàn)的,在編譯時(shí),所有的泛型類型參數(shù)會(huì)被替換為它們的非泛型上界
例如:
List<T>/**編譯后**/List<Object> List<T extends Number>/*編譯后*/List<Number>
簡(jiǎn)單來(lái)說(shuō)Java 中的泛型設(shè)計(jì)是為了適配其面向?qū)ο蟮哪P?。所有非基本類型的?shù)據(jù)(類、接口等)都被視為對(duì)象,因此泛型也是為對(duì)象設(shè)計(jì)的。
所以編譯時(shí)如果沒(méi)有指定上界,通常會(huì)被替換為 Object,基本數(shù)據(jù)類型不是對(duì)象,而是 Java 提供的原始類型,不能直接用于泛型。