instanceof isInstance isAssignableFrom 的区别

X instanceof Y  可以理解为X是Y的实例吗?值返回true或者false,其中X不能为某个类,必须是某类的一个实例, Y必须是类。

X.class.isInstance(Object o)  可以理解为instanceof的变种, 只是使用方式不一样,这次是类对象出现在左边,用来判断o是否是该类的实例,其中 o extends X 或者 o.getClass() == X.class就为true

X.class.isAssignableFrom(Class<?> clazz)  从字面含义来理解就是,是否可以从clazz转型为X的,也就是在java继承体系中,他们可以clazz向上转型为X类,其中clazz <= X类,如果clazz可以被向上转型为X,那么返回true。

X可以是任意类。

 

posted @ 2016-06-13 19:30  巡音  阅读(137)  评论(0编辑  收藏  举报