Java和C#是两款相似性超过96%的语言,无论是语法还是运行原理机制,这两者都有着诸多的相似之处。但是目前的市场Java似乎个广受欢迎一些,但是C#也确实已有些地方比java更加的优异,比如今天我们要说的泛型。Java的泛型为伪泛型,C# 则是真泛型,今天我们就来聊聊Java伪泛型。
泛型是JDK5带给我们的新特性,虽然它处于历史原因,有不完善的地方。但是更多的还是给与我们带来方便的。下面先简要先说说它的优点:
泛型就是参数化类型:
适用于多种数据类型执行相同的代码
泛型中的类型在使用时指定
泛型归根到底就是“模版”
优点:使用泛型时,在实际使用之前类型就已经确定了,不需要强制类型转换。提高安全性。
可以有:泛型类型、 泛型类、泛型接口、泛型方法、泛型的继承 extends/super、泛型通配符。
为什么说Java的泛型是"假"的呢?
其实Java为了向下兼容,提出来的泛型只是一个语法糖,并不是像c++那样是真的泛型。下面我通过两个简单的例子,可以让大家感受一下:
public static void main(String[] args) throws Exception {
List list = new ArrayList<>();
list.add(1);
//list.add("a"); // 这样直接添加肯定是不允许的
//下面通过java的反射,绕过泛型 来给添加字符串
Method add = list.getClass().getMethod("add