6 java的泛型

1:什么是泛型

  • 泛型:把类型明确的工作推迟到创建对象或者调用方法的时候才去明确的特殊类型
  • java泛型的设计原则:只要编译时期没有出现警告,那么运行期间就不会出现ClassCastExpeption异常
参数化类型
  • 1:把类型当做是参数一样传递
  • 2:<数据类型>只能是引用类型

2:为什么需要泛型

没有泛型,集合会怎么样
  • 1:Collection、Map集合对元素的类型是没有任何限制的。本来我的Collection集合装载的是全部的Dog对象,但是外边把Cat对象存储到集合中,是没有任何语法错误的。
  • 2:把对象扔进集合中,集合是不知道元素的类型是什么的,仅仅知道是Object。因此在get()的时候,返回的是Object。外边获取该对象,还需要强制转换。
有了泛型以后
  • 1:代码更加简洁(不需要强制转换)
  • 2:程序更加健壮(只要编译时期没有警告,那么运行时期就不会出现ClassCastException异常)
  • 3:可读性和稳定性(在编写集合的时候,就限定了类型)
  • 4:可以使用增强for遍历集合
//创建集合对象
ArrayList<String> list = new ArrayList<>();

list.add("hello");
list.add("world");
list.add("java");

//遍历,由于明确了类型.我们可以增强for
for (String s : list) {
    System.out.println(s);
}

3:泛型的使用

1:泛型类

泛型类就是把泛型定义在类上面,用户使用该类的时候,才把类型明确下来

/*
    1:把泛型定义在类上
    2:类型变量定义在类上,方法中也可以使用
 */
public class ObjectTool<T> {
    private T obj;

    public T getObj() {
        return obj;
    }

    public void setObj(T obj) {
        this.obj = obj;
    }
}
测试
public static void main(String[] args) {
        //创建对象并指定元素类型
        ObjectTool<String> tool = new ObjectTool<>();

        tool.setObj(new String("钟福成"));
        String s = tool.getObj();
        System.out.println(s);


        //创建对象并指定元素类型
        ObjectTool<Integer> objectTool = new ObjectTool<>();
        /**
         * 如果我在这个对象里传入的是String类型的,它在编译时期就通过不了了.
         */
        objectTool.setObj(10);
        int i = objectTool.getObj();
        System.out.println(i);
    }
2:泛型方法
//定义泛型方法..
public <T> void show(T t) {
    System.out.println(t);
}                            
测试
public static void main(String[] args) {
        //创建对象
        ObjectTool tool = new ObjectTool();

        //调用方法,传入的参数是什么类型,返回值就是什么类型
        tool.show("hello");
        tool.show(12);
        tool.show(12.5);

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值