关于泛型的一些问题

 Q1:List <String> list = new LinkedList ()     为什么创建链表时可以不指定泛型?

        Java中,当你创建一个集合类实例,理想情况下应该明确指定泛型类型,这样可以享受泛型带来的类型安全和编译时检查的好处。然而, List<String> list = new LinkedList() 没有在创建 LinkedList 实例时明确指定泛型类型,但这行代码依然可以编译通过。这是因为在Java的类型推断机制中,编译器会根据左边的变量声明类型来进行泛型类型的推断。

        具体到这个例子,因为左侧 List<String> 已经指定了泛型为 String,编译器能够推断出右侧创建的 LinkedList 也应该使用相同的泛型类型 String。所以,虽然没有显式写出 new LinkedList<String>(),但实际效果上是等同的,编译器会自动加上泛型信息。

Q2:  List<Double>list=new LinkedList();

        list.add(5.3);       泛型是Double类,为什么可以向链表中添加double类型数据?

  double 是基本数据类型,而 Doubledouble 的封装类。Java支持自动装箱和拆箱功能,这使得基本数据类型和它们对应的包装类之间可以自动转换。

        自动装箱是Java编译器自动将基本数据类型转换为对应的封装类对象的过程。在这个例子中,double5.3 被自动转换成 Double 对象,然后添加到集合中。

         自动装箱和拆箱功能解决了泛型不能直接使用基本类型的问题。这使得在使用泛型集合时,可以通过自动装箱将基本类型转换为它们对应的封装类,从而允许基本类型的“间接”使用。

  • 12
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值