JAVA泛型学习随笔

泛型

1、概念

​ 参数化类型

泛型类:

public class Test<T> {
    
    private T test1;
    public static void main(String[] args) {
        Test<String> test = new Test<>();
    }
}  
package com.albert.sjms.fanxing;

import java.util.ArrayList;
import java.util.Random;

public class ProductGetter<T> {
    //奖品
    private T product;
    //奖品池
    ArrayList<T> list = new ArrayList<>();

    public void add(T product){
        list.add(product);
    }

    //抽奖器
    public T get(){
        product = list.get(new Random().nextInt(list.size()));
        return product;
    }

}
package com.albert.sjms.fanxing;

public class Test {

    public static void main(String[] args) {
        ProductGetter<String> productGetter = new ProductGetter<>();
        String[] strPros = {"苹果手机","华为手机","扫地机器人","咖啡机"};
        for (String strPro : strPros) {
            productGetter.add(strPro);
        }
        String s = productGetter.get();
        System.out.println("恭喜您,抽中了:"+s);
    }

}

从泛型类派生子类:

  • 子类也是泛型类,子类和父类泛型类型一致

    class ChildGeneric<T> extends Generic<T>
    
  • 子类不是泛型类,父类要明确泛型的类型

    class ChildGeneric extends Generic<String>
    

泛型接口

  • 实现类不是泛型类,接口要明确数据类型
  • 实现类也是泛型类,实现类和接口的泛型类型要一致(实现类包含接口的泛型类型)

泛型方法

//泛型方法
public <E> E getPro(ArrayList<E> list){
    return list.get(new Random().nextInt(list.size()));
}

泛型方法参数类型必须遵从泛型方法的标识,标识可以是多个,这里如果ArrayList就会报错了

类型通配符

一般是使用 “?”,类型实参,而不是类型形参

上限 <? extends Number> 只能是Number或Number子类

下限 <? super Number> 只能是Number或Number的父类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值