isAssignableFrom 与 instanceof 的区别

a instanceof B, B 满足如下条件,返回True

           1. B 是 a 的 类

           2. B 是 a 的 超类

           3. B 是 a 的 接口

           4. B 是 a 的 超类 接口

 

a.isAssignableFrom( B.class ), B 满足如下条件,返回True

           1. B 是 a 的类

 

一个简单 的Junit test

@Test public void testIsAssignableFrom(){ User user = new User(); assertTrue(user.getClass().isAssignableFrom(User.class)); assertFalse(user.getClass().isAssignableFrom(Actor.class)); assertFalse(user.getClass().isAssignableFrom(IUser.class)); assertFalse(user.getClass().isAssignableFrom(IActor.class)); assertTrue(user instanceof User); assertTrue(user instanceof Actor); assertTrue(user instanceof IUser); assertTrue(user instanceof IActor); } private class User extends Actor implements IUser{} private class Actor implements IActor{} private interface IUser{} private interface IActor{}

 

你可能感兴趣的:(Java_Basics)