java 泛型边界

本文介绍了Java中泛型的使用技巧,特别是针对泛型的上下界限制进行详细解析。通过示例代码展示了如何利用? super Number允许向集合添加Number类型的子类实例,而? extends Number则不允许添加具体子类型,以此确保类型安全。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class TestMain {


	
	
	public static void main(String args[]){
		//编译的时候就知道了 下限是 Number
		//List<Number自己或Number的父类>
		//编译的时候就知道了<? super Number>产生的一定是Number自己或Number的父类
		//所以add Number的子类时可以通过,没毛病
		List <? super Number> list1 = new ArrayList<Serializable>();
		
		//然后往list添加Number的子类,没毛病 可以通过
		list1.add(new Integer(8));
		list1.add(new Double(4.5));
		
		
		
		//编译的时候只知道上限是Number
		//然后List<Number自己或的子类>,问题来了
		//编译的时候<? extends Number> 不知道 是具体的哪个子类 有可能Integer也有可能是Double
		//所以add的时候编译不通过
		List <? extends Number> list2 = new ArrayList<Number>();
		list2.add(new Integer(8));//编译不通过
		list2.add(new Double(4.5));//编译不通过
		
		
	}
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值