泛型使用笔记

强制声明泛型的实际类型

/**
 * 把一个变长参数转换为列表,并且长度可变
 * @author: Administrator
 * @date: 2021/01/30 20:15
 * @description:
 */
public class Seg95 {
    public static void main(String[] args) {
        //正常用法
        List<String> list1 = ArrayUtil.asList("A","B");
        //java8中Stream替代写法
        List<String> list4 = Stream.of("A", "B").collect(Collectors.toList());
        //参数为空
        List list2 = ArrayUtil.asList();
        //参数未数字和字符串的混合
        List list3 = ArrayUtil.asList(1,2,3.1);
        List list5 = Arrays.asList(1,2,3.1);

        System.out.println(list1);
        System.out.println(list2);
        System.out.println(list3);
        System.out.println(list4);
        System.out.println(list5);
    }
}
class ArrayUtil{
    public static <T> List<T> asList(T... t){
        List<T> list = new ArrayList<>();
        Collections.addAll(list,t);
        return list;
    }
}

不同的场景使用不同的泛型通配符

泛型结构只参与读操作则限定上界(extends关键字)
泛型结构只参与写操作则限定下界(使用super关键字)
泛型结构即用作读操作有用作写操作,使用确定的泛型类型即可如List

/**
 * 泛型结构只参与读操作则限定上界(extends关键字)
 * 泛型结构只参与写操作则限定下界(使用super关键字)
 * 泛型结构即用作读操作有用作写操作,使用确定的泛型类型即可如List<E>
 * @author: Administrator
 * @date: 2021/01/30 20:15
 * @description:
 */
public class Seg96 {
    public static void main(String[] args) {

    }
    public static <E> void read(List<? extends E> list){
        for (E e : list) {
            //业务逻辑处理
        }
    }
    public static void write(List<? super Number> list){
        list.add(123);
        list.add(3.14);
    }
}

list中泛型顺序为T、?、Object

List,List<?>,List这三者都可以容纳所有的对象,但是使用的顺序应该是首选
List,次之List<?>,最后List
List是确定的某一个类型,可以进行读写操作,支持add,remove
List<?>是只读类型,不能进行增加、修改操作,但是可以进行删除元素,比如执行remove,clear等方法,
那是因为它的删除动作与泛型类型无关。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NewTech精选

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值