java泛型

泛型

1.概述

泛型

1.概述

泛型,即“参数化类型”,总所周知当我们在写方法时,又可能会用到形参,然后在调用方法时从传递实参。参数化类型就是在把具体类型(int,String,引用类型…)参数化,然后在调用它时传递具体的类型进去。

举个例子

package com.zhy.blog;


public class Example {
    public static void show(int n){
        System.out.println(n);
    }

    public static void main(String[] args) {
        show("t");
        show(2);
    }
}

//java: 不兼容的类型: java.lang.String无法转换为int

在这里会发现这个方法会报错,因为这个方法的形参应该是int型而不是String型。

那么倘若以后我们要调用某一个方法因为给入参数不一样,岂不是要重构无数个方法?

java考虑到了这种情况,所以给出了泛型的使用。

public class Example{
        public static void main(String[] args) {
            Test<String> t1 = new Test();
            Test<Integer> t2 = new Test<>();
            t1.show("你好");
            t2.show(3);
        }
    }
class Test<T> {
    public void show(T n) {
        System.out.println(n);
    }
}

泛型的参数化类型只能是类类型(包括自定义类),不能是简单类型。

那么定义的泛型必须传入一个泛型类型实参吗?

并不是,倘若没有传入泛型实参,那么调用使用泛型的方法时可以传入任意类型。

package com.zhy.blog;


public class Example{
        public static void main(String[] args) {
            Test t1 = new Test();
            Test<Integer> t2 = new Test<>();
            t1.show("你好");
            t1.show(1);
            t2.show(3);
        }
    }
class Test<T> {
    public void show(T n) {
        System.out.println(n);
    }
}


//你好
//1
//3

泛型方法的使用

上面的方法并不是泛型方法,只是泛型类中的成员方法

package com.zhy.blog;


public class Example{
        public static void main(String[] args) {
            Test t1 = new Test();
            t1.show(1);
            t1.show("你好");
        }
    }
class Test {
    public <T> void show(T n) {
        System.out.println(n);
    }
}


//1
//你好

这种才是泛型方法的正确使用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值