为什么报classcast异常

zzjinfosys 2010-09-18 12:58:43
String b="wode";
String c="wodedss";
set.add(b);set.add(c);
String [] aa = (String[])set.toArray();
System.out.println(aa.length+" "+aa[1]);
我想去的 set 里所有 元素 这样写 为什么报那个错误,请教中
...全文
209 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingtianpi0 2010-10-08
  • 打赏
  • 举报
回复
帮你顶下!!!
zhoutt1989 2010-10-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wypbt1032 的回复:]
String [] aa = (String[])set.toArray();
数组不能这样整个强制转换;
两种解决解决方法:
1.

Java code

Object[] object = set.toArray();
String [] str = new String[object.length];
for(int i=0;i<object.length;i++){
……
[/Quote]


顶一个!
BearKin 2010-10-08
  • 打赏
  • 举报
回复
这里返回的就是Object数组 即使加了泛型返回的也是Object数组 方法写在了AbstractCollection类中 源代码如下:


public Object[] toArray() {
// Estimate size of array; be prepared to see more or fewer elements
Object[] r = new Object[size()];
Iterator<E> it = iterator();
for (int i = 0; i < r.length; i++) {
if (! it.hasNext()) // fewer elements than expected
return Arrays.copyOf(r, i);
r[i] = it.next();
}
return it.hasNext() ? finishToArray(r, it) : r;
}


说实话我个人感觉用这个toArray方法也不会有什么效率上的提升 你完全可以自己写一个方法嘛


package com.java.lv9.test;

import java.util.HashSet;
import java.util.Set;

public class StduySet {

/**
* @param args
*/
public static void main(String[] args) {
Set<String> set = new HashSet<String>();
set.add("1111");
set.add("2222");
String[] string = new String[set.size()];

int index = 0;
for (String s : set) {
string[index++] = s;
}
}
}


xiaoanian 2010-10-08
  • 打赏
  • 举报
回复
好贴,学习
浪子燕青 2010-09-18
  • 打赏
  • 举报
回复
路过,学习了。。。
q956140151 2010-09-18
  • 打赏
  • 举报
回复
toArray()方法返回的是一个Object[],不能强转为String[]。
下例可以通过:
 Set<String> set = new HashSet<String>();
String b="wode";
String c="wodedss";
set.add(b);set.add(c);
String [] aa = set.toArray(new String[0]);
System.out.println(aa.length+" "+aa[1]);

gouxiongyaya 2010-09-18
  • 打赏
  • 举报
回复
楼上说的是对的,API如下
Object[] toArray()
<T> T[] toArray(T[] a)
wypbt1032 2010-09-18
  • 打赏
  • 举报
回复
String [] aa = (String[])set.toArray();
数组不能这样整个强制转换;
两种解决解决方法:
1.

Object[] object = set.toArray();
String [] str = new String[object.length];
for(int i=0;i<object.length;i++){
str[i] = (String)object[i];
}

2

Set<String> set = new HashSet<String>();
set.add("1111");
...
String[] str = set.toArray(new String[0]);
michaellufhl 2010-09-18
  • 打赏
  • 举报
回复
您的这个set里面除了String还有什么类型的元素?
shadow55 2010-09-18
  • 打赏
  • 举报
回复
修改为set.toArray(new String[0]);
通过本课程学习您可以学习到Dart语言如下知识:第1章 Dart语言概述:Dart语言简介、Dart语言支持平台开发、Flutter为什么选择Dart语言。第2章 开发环境搭建:下载Dart SDK、Windows下安装Dart SDK、macOS下安装Dart SDK、Visual Studio Code开发工具、IntelliJ IDEA开发工具。第3章 完成个Dart程序:动动手写一个HelloWorld、Dart源代码文件组织结构、Visual Studio Code调试Dart代码、IntelliJ IDEA调试Dart代码。第4章 Dart语法基础:标识符、关键字、变量、常量、注释、库。第5章 Dart数据类型:数值类型、字符串、数据类型相互转换、布尔类型和枚举类型第6章 运算符:算术运算符、算术赋值运算符、关系运算符、逻辑运算符、位运算符、条件运算符、类型检查运算符。第7章 控制语句:分支语句、循环语句、跳转语句。第8章 函数:函数声明、可选参数、头等函数(first-class function)、匿名函数。第9章 类:类声明、getter和setter访问器、构造函数、静态变量和静态方法、级联符号。第10章 继承与多态:Dart中的继承实现、调用父类构造函数、成员变量的覆盖(Override)、方法的覆盖(Override)、多态、混入(Mixins)。第11章 抽象类与接口:抽象类、接口、Dart中隐式接口、实现接口。第12章 数据容器:List容器、Set容器、Map容器、泛型。第13章 异常处理:捕获异常、try-on捕获异常、try-catch捕获异常、try-on-catch捕获异常、使用finally代码块、手动抛出异常、自定义异常类。第14章 异步编程:Dart异步处理机制、案例:同步函数实现读取文件、案例:异步函数实现读取文件、Future对象。  

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧