Android - 为什么对象被转换为类?

时间:2012-12-17 11:30:15

标签: java android class object casting

我看到了很多,

返回对象的方法,即

public Object getGroup(int groupPosition) 
{       
    return groups.get(groupPosition);
}

然后,当调用此函数时,返回的对象将被转换为某个类,即

ExpandListGroup group = (ExpandListGroup) getGroup (groupPosition);

似乎是这样的情况:如果返回一个普通对象,你知道该对象的类(TestClass),并且你想要将一个预先声明的对象(X)设置为该返回的对象(Y),你需要强制转换形式为...的对应类。

TestClass X = (TestClass) returnsY();

这是对的吗?将对象作为一个类投射是否还有其他更深层次的意义/后果?

干杯

2 个答案:

答案 0 :(得分:3)

所有引用都需要保存与引用或其子类型相同类型的对象。由于编译器只知道getGroup返回Object,因此不能将Object分配给TestClass引用(Object可能没有实现TestClass所有的所有方法)。要解决这个问题,你需要通过强制转换它来明确告诉编译器getGroup返回的对象也是TestClass类。

答案 1 :(得分:1)

这样做是为了能够调用TestClass的方法。但是如果没有任何先前的检查(看到该对象实际上是TestClass的一个实例),你将得到一个ClassCast异常