现在的位置: 首页 > 综合 > 正文

isAssignableFrom与instanceof区别

2018年05月22日 ⁄ 综合 ⁄ 共 1864字 ⁄ 字号 评论关闭

http://reeboo.javaeye.com/blog/221527

 

isAssignableFrom 是用来判断一个类Class1和另一个类Class2是否相同或是另一个类的超类或接口。  
  通常调用格式是  
        Class1.isAssignableFrom (Class2)  
  调用者和参数都是   java.lang.Class   类型。  
     
  而   instanceof   是用来判断一个对象实例是否是一个类或接口的或其子类子接口的实例。  
    格式是:   oo   instanceof   TypeName    
    第一个参数是对象实例名,第二个参数是具体的类名或接口名

具体例子如下:

Java代码 复制代码
  1.  1.  package test;      
  2.  2.      
  3.  3.      
  4.  4.      
  5.  5public class Test2 {      
  6.  6.      
  7.  7.       public  void  testIsAssignedFrom1()         
  8.  8.       {         
  9.  9.           System.out.println(  String.class.isAssignableFrom(Object.class) ) ;         
  10. 10.       }         
  11. 11.               
  12. 12.       public  void  testIsAssignedFrom2()         
  13. 13.       {         
  14. 14.           System.out.println(  Object.class.isAssignableFrom(Object.class) );         
  15. 15.       }         
  16. 16.               
  17. 17.       public  void  testIsAssignedFrom3()         
  18. 18.       {         
  19. 19.           System.out.println( Object.class.isAssignableFrom(String.class) );         
  20. 20.       }         
  21. 21.               
  22. 22.       public  void  testInstanceOf1()         
  23. 23.       {         
  24. 24.           String  ss  =  "";         
  25. 25.           System.out.println(  ss  instanceof Object );         
  26. 26.       }         
  27. 27.               
  28. 28.       public  void  testInstanceOf2()         
  29. 29.       {         
  30. 30.           Object  o = new   Object();         
  31. 31.           System.out.println(  o  instanceof  Object );         
  32. 32.       }        
  33. 33.             
  34. 34.             
  35. 35.       public static void main(String[] args){      
  36. 36.           Test2 test = new Test2();      
  37. 37.           test.testIsAssignedFrom1();      
  38. 38.           test.testIsAssignedFrom2();      
  39. 39.           test.testIsAssignedFrom3();      
  40. 40.           test.testInstanceOf1();      
  41. 41.           test.testInstanceOf2();      
  42. 42.       }      
  43. 43. }      
  44. 44.      
  45. 45. 打印结果为:      
  46. 46false     
  47. 47true     
  48. 48true     
  49. 49true     
  50. 50true    

抱歉!评论已关闭.