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中插入数据?
答案 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());