尝试编写一个构造函数,它将从Object创建一个新的CastTest对象,如果它是CastTest的一个实例,就像这样(x是CastTest的实例变量):
public CastTest(Object theTestObj)
{
if (theTestObj instanceof CastTest) {
//this.x = theTestObj.x; // Error: cannot find symbol: variable x ???
//this.x = (CastTest) theTestObj.x; // Error: cannot find symbol: variable x ???
//this.x = theTestObj.getX(); // Error: cannot find symbol: method getX() ???
//this.x = (CastTest) theTestObj.getX(); // Error: cannot find symbol: method getX() ???
}
}
为什么找不到变量或方法?它们在同一个类定义中定义。
答案 0 :(得分:1)
在声明的引用类型上解析实例变量。 Object
没有x
实例字段。适当的演员是
((CastTest)theTestObj).x
// this whole expression is of type CastTest which seems to have a field x
你有什么,这个
(CastTest) theTestObj.x;
相当于
(CastTest) (theTestObj.x)
与之前解释的相同问题
theTestObj.x