Java泛型笔记

泛型

泛型,即参数化类型。在类型未知的时候,可以使用泛型来代替。通俗点来说,泛型就是一个参数,用来接收数据的类型。定义泛型的符号是<>。需要注意的是泛型的参数不支持多态。注意是参数。

泛型类:

class fanclass<T>{
   
    private T key;

    public T getKey() {
   
        return key;
    }

    public void setKey(T key) {
   
        this.key = key;
    }

    public fanclass(T key) {
   
        this.key = key;
    }

    @Override
    public String toString() {
   
        return "fanclass{" +
                "key=" + key +
                '}';
    }
}

类名后面加上尖括号和参数就是泛型类,其中里面的T可以随便定义,只要不跟引用类型相同既可以。如果定义了引用类型,那么这个泛型类的泛型就确定了。在实例化泛型类的时候可以给泛型参数传入引用类型的数,需要注意的是不能传入基本数据类型,但可以传入基本数据类型的包装类。如果实例化的时候没有传入数据类型,那么就会默认为Object类型。
实例化:

 fanclass f =new fanclass(100);
 fanclass <String> f1 =new fanclass<>("acb");

调用方法后的返回值类型:

        Object key = f.getKey();
        System.out.println("key:"+key);

        String key1 = f1.getKey();
        System.out.println("key1"+key1);

输出结果:

key:100
key1acb

泛型方法:
以上的方法都不是泛型方法,泛型方法需要有泛型声明。

//抽奖器
class product<T>{
   

    Random random =new Random();
    //奖品
    public T p;
    //奖品集合
    ArrayList<T> list =new ArrayList<>();
    //添加奖品
    public void addProduct(T t){
   
        list.add(t);
    }
    //抽奖
    public T getProduct(){
   
        p =list.get(random.nextInt(list.size()));
        return p;
    }
    public <T> T getProduct(ArrayList<T> list){
   
        return list.get(random.nextInt(list.size()));
    }

在这里我定义了一个类,注意看最后一个方法,这个方法有个<>和参数T。这个方法就是一个泛型方法。泛型方法里面的泛型参数跟泛型类的泛型参数是没有任何关系的,哪怕同名。注意,当调用泛型方法时传入参数的类型就是泛型参数的类型。
泛型方法调用:

        System.out.println("----------调用泛型方法-------------");
 		product <Integer>p4 =new product<>();
        ArrayList<String> list =new ArrayList<>();
        list.add("苹果电脑");
        list.add("劳斯莱斯幻影");
        list.add("布加迪威龙");
        list.add("柯尼塞格");
        //泛型方法的类型是在调用方法的时候指定的
        //泛型方法的类型跟泛型类的类型毫无关系
        System.out.println(p4.getProduct(list) +"\t"+p4.getProduct(list).getClass().getSimpleName());

输出结果:

----------调用泛型方法--------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值