A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

大家来帮忙下,我有一个Student类:
public class Student implements Comparable<Student> {
        private String name;
        private int age;
        private double score;
        public Student(){
               
        }
        public Student(String name, int age, double score){
                this.name=name;
                this.age=age;
                this.score=score;
        }
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public int getAge() {
                return age;
        }
        public void setAge(int age) {
                this.age = age;
        }
        public double getScore() {
                return score;
        }
        public void setScore(double score) {
                this.score = score;
        }
        @Override
        public int compareTo(Student stu) {
               
                return (int) (this.score-stu.getScore());
        }
        @Override
        public String toString(){
                return "姓名:"+this.name+"  年龄:"+this.age+"  成绩:"+this.score;
        }
}




我想在主函数这边
public static void main(String[] args) {
                Student stu1 = new Student("aaa",11,88.0);
                Student stu2 = new Student("bbb",13,90.0);
                Student stu3 = new Student("aaa",11,88.0);
                Student stu4 = new Student("bbb",13,91.0);
                Student stu5 = new Student("aaa",13,82.0);
                Student stu6 = new Student("bbb",12,94.0);
                Student stu7 = new Student("aaa",15,81.0);
                Student stu8 = new Student("bbb",16,91.0);


                List<Student> list = new ArrayList<Student>();
                list.add(stu1);
                list.add(stu2);
                list.add(stu3);
                list.add(stu4);
                list.add(stu5);
                list.add(stu6);
                list.add(stu7);
                list.add(stu8);


                /*
                   这边报错:Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ldemo2.Student;
        at demo2.demo2.main(demo2.java:19)
                   是转换异常,该怎么解决呢,求大神指导
               */
                Student[] stus = (Student[]) list.toArray();

}

3 个回复

倒序浏览
  1.             Object[]stus = list.toArray();
  2.             for(Object stu:stus)
  3.             {
  4.                     System.out.println(stu);
  5.             }
复制代码

只会弄这个了,toArray()返回一个Object[]
回复 使用道具 举报

List,Set转换为数组的方法。
toArray函数有两种形式,一种无参数,一种带参数,注意带参数形式中,要指明数组的大小。


例子:
public void convertCollectionToArray() {
List list = new ArrayList(); Object[] objectArray1 = list.toArray(); String[] array1 = list.toArray(new String[list.size()]);
}
带参数的转换方式才能不用Object[]接收。你的程序的话就将Student[] stus = (Student[]) list.toArray();改为Student[] stus = (Student[]) list.toArray(new Student[list.size()]);就是说要自己建一个数组接收,而不是只建立引用。


回复 使用道具 举报
路过看看。。。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马