Java泛型的优点

1.1优点
1.提交了java的类型安全
    泛型在很大程度上来提高了java的程序安全。例如在没有泛型的情况下,很容易将字符串 123 转成 Integer 类型的 123 亦或者 Integer 转成 String,而这样的错误是在编译期无法检测。而使用泛型,则能很好的避免这样的情况发生。
 
 2.不需要烦人的强制类型转换
    泛型之所以能够消除强制类型转换,那是因为程序员在开发的时候就已经明确了自己使用的具体类型,这不但提高了代码的可读性,同样增加了代码的健壮性。
    
3. 提高了代码的重用性
    泛型的程序设计,意味着编写的代码可以被很多不同类型的对象所重用
 

二,为什么要使用泛型

1、解决元素存储的安全性问题,好⽐商品、药品标签,不会弄错。

2.解决获取数据元素时,需要类型强制转换的问题,好⽐不⽤每回拿商品、药品都要辨别。

 2、Java泛型可以保证如果程序在编译时没有发出警告,运⾏时就不会产⽣ClassCastException异常。同时,代码更加简洁、健壮。

二、泛型使用与不使用的区别

1、泛型的没有使用会造成什么后果呢

import org.junit.Test;
import java.util.ArrayList;
/**
 * 泛型的使⽤
 * 1.jdk5.0新增的特征
 */
 public class GenericTest {
 //在集合中使⽤泛型之前的情况:
 @Test
 public void test(){
 ArrayList list = new ArrayList();
 //需求:存放学⽣的成绩
 list.add(78);
 list.add(49);
 list.add(72);
 list.add(81);
 list.add(89);
 //问题⼀:类型不安全
 // list.add("Tom");
 for(Object score : list){
 //问题⼆:强转时可能出现类型转化异常
 int stuScore = (Integer)score;
 
 System.out.println(stuScore);
 }
 }
}

那我们发现,没有添加泛型的时候呢,我们可以向list集合添加各种各样类型的数据,那么就会导致在数据类型转换的时候发生异常,那么我们添加泛型的好处也是很明显的了。

2.添加泛型的使用会发生什么效果呢?

public class GenericTest {
 //!在集合中使⽤泛型的情况:以ArrayList为例
 @Test
 public void test2(){
 //注意点:泛型的类型必须是类,不能是基本数据类型。需要⽤到基本数据类型的位置,拿包装类替换
 //看图例这⾥规定泛型是Integer,使⽤add⽅法的时候也是Integer
 ArrayList<Integer> list = new ArrayList<Integer>();
 
 list.add(78);
 list.add(49);
 list.add(72);
 list.add(81);
 list.add(89)
 
 //编译时,就会进⾏类型检查,保证数据的安全
// list.add("Tom");
 //⽅式⼀:
// for(Integer score :list){
// //避免了强转的操作
// int stuScore = score;
//
// System.out.println(stuScore);
// }
 
 //⽅式⼆:
 Iterator<Integer> iterator = list.iterator();
 while(iterator.hasNext()){
 int stuScore = iterator.next();
 System.out.println(stuScore);
     }
 }
 
 //在集合中使⽤泛型的情况:以HashMap为例
 @Test
 public void test3(){
 // Map<String,Integer> map = new HashMap<String,Integer>();
 //jdk7新特性:类型推断, 实例化的时候就可以不⽤写泛型,空即可
 Map<String,Integer> map = new HashMap<>();
 map.put("Tom",87);
 map.put("Tone",81);
 map.put("Jack",64);
// map.put(123,"ABC");
 //泛型的嵌套
 Set<Map.Entry<String,Integer>> entry = map.entrySet();
 Iterator<Map.Entry<String, Integer>> iterator = entry.iterator();
 
 while(iterator.hasNext()){
 Map.Entry<String, Integer> e = iterator.next();
 String key = e.getKey();
 Integer value = e.getValue();
 System.out.println(key + "----" + value);
     }
 }
 
}

使用了泛型,就可以达到很多方便开发的效果,可以实现泛型的嵌套,也不用担心数据转换异常问题,有错误编译期间就会报错。

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值