Generic Array Creation 创建一个List<Character>[] 类型数组出错。以及Arrays.fill传递的是引用

做一个题目的时候发现这个问题,报错如标题,无法通过编译。

https://blog.csdn.net/luxinfeng666/article/details/114794030?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167867375016800211516296%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167867375016800211516296&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-114794030-null-null.142^v73^insert_down3,201^v4^add_ask,239^v2^insert_chatgpt&utm_term=Generic%20array%20creation&spm=1018.2226.3001.4187

文中博主给出了详细的解释

意思就是:泛型和数组不能一起用,如果想用的话考虑这样写。

List[] list = new ArrayList[26];
Arrays.fill(list, new ArrayList<Character>());

但是需要注意Arrays.fill(list,new ArrayList<Character>());这个实现是

public static void fill(Object[] a, Object val) {
        for (int i = 0, len = a.length; i < len; i++)
            a[i] = val;
}

这样初始化的话会把所有的都初始化成一个对象,只有一个引用嘛。

如果想要添加不同的list

需要这样。

for(int i = 0; i < list.length; i++) {
    list[i] = new ArrayList<Character>();
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值