为了账号安全,请及时绑定邮箱和手机立即绑定

百胜博娱乐城,沙龙娱乐网址

2016.03.10 21:56 7636浏览
问题的提出:

本文地址:http://www.bgel.cn/article/5435
文章摘要:百胜博娱乐城,沙龙娱乐网址,马德里开户,扎金花棋牌游戏官网

今天在完成一个小功能的时候,需要把存放在List中的数据转化成字符串数组。
想当然地用了List的一个方法toArray(),它的返回值是Object[]类型,于是用强制类型转换。代码如下:

public static String[] getDictValueList(String type){
        List<Dict> DictList = getDictList(type);
        List<String> DictValue = new ArrayList<>();
        for (Dict dict : DictList){
            DictValue.add(dict.getLabel());
        }
            return (String[])DictValue.toArray();
    }

结果它报错了Ljava.lang.Object; cannot be cast to [Ljava.lang.String;这个错误看起来有点奇怪,不知道前面的L和半个方括号是什么意思。

原因:

类型不匹配。

toArray()是一个抽象方法,返回Object[]类型,没有泛型,无法强转成String[]类型。要想让它返回对应的类型可以使用它的重载方法: <T> T[] toArray(T[] a);

解决办法:
  1. List转换成为数组。(这里的List是实体是ArrayList)
    调用ArrayList的toArray方法。
    public <T> T[] toArray(T[] a)返回一个按照正确的顺序包含此列表中所有元素的数组;返回数组的运行时类型就是指定数组的运行时类型。如果列表能放入指定的数组,则返回放入此列表元素的数组。否则,将根据指定数组的运行时类型和此列表的大小分配一个新的数组。
    所以我以上的返回代码修改为:
    return  DictValue.toArray(new String[DictList.size()]);
  2. 数组转换成为List
    调用ArraysasList方法
    .public static <T> List<T> asList(T... a)
    返回一个受指定数组支持的固定大小的列表。(对返回列表的更改会“直写”到数组。)此方法同 Collection.toArray 一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。
    此方法还提供了一个创建固定长度的列表的便捷方法,该列表被初始化为包含多个元素:
    List stooges = Arrays.asList("Larry", "Moe", "Curly");
    具体用法:
    String[] arr = new String[] {"1", "2"};
    List list = Arrays.asList(arr);

一个错误,两个知识点。好好学习,天天向上。

点击查看更多内容
41人点赞

若觉得本文不错,就分享一下吧!

评论

相关文章推荐

正在加载中
意见反馈 去赚学费 帮助中心 APP下载
官方微信
扎金花棋牌游戏官网

举报

0/150
提交
取消
网站地图 扑克王app官网 澳门彩票网站大全 888真人注册 龙虎博彩
澳门威利斯人app 白金会娱乐 金马国际娱乐网址下载 新濠博亚
足彩比分直播 亚博体育登录不了 神卅娱乐 白金会娱乐网上注册
亚搏娱乐APP下载 最新国际足球排名 愽天堂 扎金花平台排行榜
顶级娱乐客服 天天娱乐官网下载 利澳娱乐 拉斯维加斯赌场网址
优游彩票 富豪彩票官网 银豹娱乐城 正点游戏 凤凰彩票
斗牛娱乐登录链接 京城会娱乐 极彩娱乐官方网站 重庆时时计划 澳彩
新宝娱乐 彩票注册 彩8娱乐 同创娱乐暴利 满堂彩时时彩
圣亚娱乐城 亚彩会注册 全天重庆彩计划数据 大通彩票 万博娱乐代理