java 类型转换前先做检查

1.传统的类型转换由RTTI确保正确性。

2.instanceof关键字(二元操作符) ,返回一个Boolean值,告诉我们对象是不是某个类或该类派生类的实例,他判断的是类型。

if (a instanceof A) //对象a是不是属于A类型,A可能是a父类的父类,如果是这样也返回true

3.instanceof 不能比较Class对象,对于Class对象使用isAssignableFrom()判断

if (as.isAssignableFrom(cs))// Class对象cs所在类是不是属于Class对象as所在类或者派生类 

4.动态的instanceof :Class对象的isInstance(Object o)方法判断该Class对象是不是o类的(如果o是class对象所在类则返回true,否则返回false哪怕o是所在类的父类)。

if (cs.isInstance(c)) //如果c是class对象所在类则返回true,否则返回false,哪怕c是所在类的父类