将
if (a instanceof Cat)
Cat c=(Cat)a;
改为
Cat c;
if (a instanceof Cat)
c=(Cat)a;
就可以了。
其实你不用考虑那么多,在实际中不可能出现if (a instanceof Cat) Cat c=(Cat)a; 的情况。因为你这里定义的变量c在if外是用不到的,if中有没有处理,所以c没有意义。要让c有用就得把c的定义拿到if的外面;你如果想在if中处理变量c,那if中就得有其它语句,那样就得用{}括起来了。所以实际中不会出现你那样的错误。
if (a instanceof Cat) Cat c=(Cat)a; 的写法会报“not a statement”的错误。是语法错误,不是强制转换的问题。
不知道你要写些什么,反正没有看明白。
是不是这样的
public class TestAnimal{
public static void main(String[] args){
Animal a = new Dog();
Animal c ;
if (a instanceof Cat)
c = (Cat)a;
}
}
class Animal {
public void eat(){}
}
class Cat extends Animal {}
class Dog extends Animal {}
if (a instanceof Cat) Cat c=(Cat)a;
这样试试,别换行