Java的ArrayList的迭代有一个ClassCastException [英] java arraylist iteration having a ClassCastException

查看:152
本文介绍了Java的ArrayList的迭代有一个ClassCastException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的模型类:

 公共类的RecordSet {
    私人DATERANGE日期范围;
    私人法师;
    公共DATERANGE getDaterange(){
        返回日期范围;
    }
    公共无效setDaterange(日期范围日期范围){
        this.daterange =日期范围;
    }
    众高手getMaster(){
        返回主;
    }
    公共无效setMaster(法师){
        this.master =主;
    }
}
公共类DATERANGE {
    私人日期ddate;    公开日期getDdate(){
        返回ddate;
    }    公共无效setDdate(日期ddate){
        this.ddate = ddate;
    }}公共类硕士{    私人字符串EMP code;
    私人字符串empname;
    私人部门的字符串;
    公共字符串getEmp code(){
        返回EMP code;
    }
    公共无效setEmp code(字符串EMP code){
        this.emp code = EMP code;
    }
    公共字符串getEmpname(){
        返回empname;
    }
    公共无效setEmpname(字符串empname){
        this.empname = empname;
    }
    公共字符串getDept(){
        返回部门;
    }
    公共无效setDept(字符串DEPT){
        this.dept =部门;
    }}

我有这样的说法

 列表<&RecordSet的GT;名单=(列表<&RecordSet的GT;)query.list();

在上面的语句获取的执行,我gettind列表对象和每个对象包含两个项目(主,日期范围)?

可以在任何一个我怎样才能得到这两个模型类对象

我做过尝试,但面对classcast异常:

 列表<&RecordSet的GT;名单=(列表<&RecordSet的GT;)query.list();
            的for(int i = 0; I<则为list.size();我++){
                对象组= list.get(ⅰ);
                主masetr =(主)集;                的System.out.println(masetr);
                }

感谢


解决方案

 您无法施展他们,如果他们不realted。

类你投对象,你投它必须通过继承相关的类;也就是说,你可以施放对象只对其类的子或超-没有任何随机类的一个实例。

边注:在类层次结构向下铸造是自动的,但铸造向上不是

I have model class:

public class RecordSet {
    private DateRange daterange;
    private Master master;
    public DateRange getDaterange() {
        return daterange;
    }
    public void setDaterange(DateRange daterange) {
        this.daterange = daterange;
    }
    public Master getMaster() {
        return master;
    }
    public void setMaster(Master master) {
        this.master = master;
    }
}


public class DateRange {
    private Date ddate;

    public Date getDdate() {
        return ddate;
    }

    public void setDdate(Date ddate) {
        this.ddate = ddate;
    }

}

public class Master  {

    private String empcode;
    private String empname;
    private String dept;


    public String getEmpcode() {
        return empcode;
    }
    public void setEmpcode(String empcode) {
        this.empcode = empcode;
    }
    public String getEmpname() {
        return empname;
    }
    public void setEmpname(String empname) {
        this.empname = empname;
    }
    public String getDept() {
        return dept;
    }
    public void setDept(String dept) {
        this.dept = dept;
    }

}

I have a statement like this

List<RecordSet> list = (List<RecordSet>) query.list();

when the above statement get's executed I'm gettind the list Objects and Each object holds two items(Master,DateRange)?

Could any one How can I get those two model class objects

I've tried but facing classcast exception:

List<RecordSet> list = (List<RecordSet>) query.list();
            for(int i=0;i<list.size(); i++){
                Object set=list.get(i);
                Master masetr=(Master)set;

                System.out.println(masetr);
                }

thanks

解决方案

You can't cast them if they are not realted .

The class of the object you're casting and the class you're casting it to must be related by inheritance; that is, you can cast an object only to an instance of its class's sub- or superclass-not to any random class.

Side note: Casting downward in the class hierarchy is automatic, but casting upward is not.

这篇关于Java的ArrayList的迭代有一个ClassCastException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆