关于Jave instanceof的问题

A instanceof B,B只能是类名,不能是变量吗? 怎么动态判断一个类是另一个类或其子类?

class C extends B {

}
Class bb =B.class;
Class cc = C.class;
/*
*用来判断一个类Class1和另一个类Class2是否相同或是另一个类的超类或接口。
* 调用者和参数都是 java.lang.Class 类型。
*/
boolean qq=bb.isAssignableFrom(cc);
http://blog.csdn.net/tomcat_2014/article/details/50222867

instanceof是实例的意思,如果你B是接口的话,而A实现了接口,则A是B的实例,一般都是这样用的;这个接口可以可以被很多类实现的,所以你可以根据你的实现来判断的

不能是变量,必须是类或接口

何为实例?谁的实例通常指的是哪个类的一个对象,肯定只有类才能new对象,因此, instance of 后面必须是一个类名。 instance of 意思是什么的实例;变量不能new对象,所以 instance of 后面不能跟变量;判断一个类是另一个类的子类,你看这个类有没有继承其他类,继承有关键字extends可以确认。

这是Java语法,判断某个对象实例是否是某种数据类型,所以前者是实例对象,后者是某种类型。

instanceof翻译成中文是一个判断词,即A是类B的实例。所以b不能是变量,a可以是变量也可以是类,这个就可以判断一个类是否另一个类的子类。
也可以用
"123".getClass().equals(Object.class) 是否是同类
"123".getClass().getSuperClass().equals(Object.class) 是否是子类

比如你有一个Animal类,它有一个实例对象是a,那么你要判断a这个对象是不是Animal这个类的一个对象就需要使用 if(a instanceof Animal)这个来进行判断,
instanceof前面的那个应该是某个类的实例对象,后面应该是某个类的类型,这样就可以进行判断了,a不能是随意的一个变量,自己可以去测试一下在eclipse中