15、Java编程:泛型、流与多线程的深入探索

Java编程:泛型、流与多线程的深入探索

1. Java泛型与类型擦除

在Java中,泛型是静态类型系统的一部分,而非动态系统。像通配符或者简单使用 Comparable 都无法完全表达某些约束。例如, List<Integer> 只是静态类型,而 List 既是静态类型也是动态类型。在运行时,类型参数并不存在,这种情况被称为类型擦除。虽然运行时表达式如 x instanceof List 是有效的,但泛型的类型信息在运行时会被擦除。泛型的世界非常丰富,这里只是触及了冰山一角,还有无界通配符、具体化和通配符捕获等内容值得进一步探索。

2. 类型可变性

Java使用 List<? extends Animal> 来接受羊列表或牛列表等,而不是简单的 List<Animal> ,这是有原因的。示例如下:

List<Horse> horses = List.of(new Horse());
List <Cow> cows = List.of(new Cow());
List <Animal> animals;

animals = horses; 这个赋值是非法的。因为如果合法, animals.add(new Cow()) 这个静态正确的调用会将一头牛添加到马的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值