检索对象

时间:2017-08-10 09:38:32

标签: java

public static void main(String args[])
{

    List a =new ArrayList<Object>();
    a.add("asha");
    a.add("saha");
    ArrayList<SampleObject> sampleObjects =(ArrayList<SampleObject>)a;//Yes this should not be done but still
    sampleObjects.get(0).getName();// exception is thrown here

}

班级是

  public class SampleObject implements Serializable
{
    public String getName()
    {
        return name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    public String getNumber()
    {
        return number;
    }

    public void setNumber(String number)
    {
        this.number = number;
    }

    private String name;
    private  String number;
}

有人可以解释为什么这个运行时异常。 当类型本身不匹配时,如何在sampleObjects中插入数据?

2 个答案:

答案 0 :(得分:2)

当你进行演员表演时,你要承担你所投射的对象(在这种情况下为String)的责任,使其成为你正在施放的类型(在这种情况下为SampleObject)。稍后,在运行时,JVM发现您没有履行该职责(String不是SampleObject)并且抱怨RuntimeException(更确切地说是ClassCastException)。

答案 1 :(得分:0)

异常表示您无法将String对象强制转换为SampleObject类型。要正确检索名称属性,请尝试以下操作;

SampleObject s1 = new SampleObject();
    s1.setName("asha");
    SampleObject s2 = new SampleObject();
    s1.setName("saha");

    ArrayList<SampleObject> sampleObjects = new ArrayList<>();
    sampleObjects.add(s1);
    sampleObjects.add(s2);

    System.out.println(sampleObjects.get(0).getName());