这是为了提升一点类型检查的能力,强类型的语言还是希望多提供点类型系统的保障。不太希望代码里出现太多的类型转换(泛型由编译程器转换类型,代码里就少了转换)
Java由于受限于虚拟,所以实现才会让你觉得作用不大。如果你用过C++的模板的话,你大概就知道在C++里模板会生成不同的类,比如你的show如果用C++写,当T是int时只是传入4byte大小的整型,当T为double时是传入8byte的双精度浮点。
其实Java里还有public void show(T t){}和public void show(T t){}这样的形式,可以把类型限制在一个比object更小的集里,这样就不会是个对象都往里传。大多数函数本来就不适用所有类型,又不只适用一种类型。