1. 程式人生 > >Class.isAssignableFrom(Class clz)方法 與 instanceof 關鍵字的區別

Class.isAssignableFrom(Class clz)方法 與 instanceof 關鍵字的區別

一個 assign 博客 -h logs lang pen clas cat

Class.isAssignableFrom(Class clz)方法 與 instanceof 關鍵字的區別

博客分類:
  • Java
.netHTML

原地址:http://topic.csdn.net/t/20050127/15/3758173.html

我略作了下修改

Class.isAssignableFrom()是用來判斷一個類Class1和另一個類Class2是否相同或是另一個類的子類或接口。
格式為:
Class1.isAssignableFrom(Class2)
調用者和參數都是java.lang.Class類型。
instanceof是用來判斷一個對象實例是否是一個類或接口的或其子類子接口的實例。
格式是:o instanceof TypeName
第一個參數是對象實例名,第二個參數是具體的類名或接口名,例如 String,InputStream。

Java代碼 技術分享
  1. package com.bill99.pattern;
  2. public class AssignableTest {
  3. public AssignableTest(String name) {
  4. }
  5. /**
  6. * 判斷一個類是否是另一個類的父類
  7. * 是打印true
  8. * 否打印false
  9. */
  10. public static void testIsAssignedFrom1() {
  11. System.out.println("String是Object的父類:"+String.class.isAssignableFrom(Object.class));
  12. }
  13. /**
  14. * 判斷一個類是否是另一個類的父類
  15. * 是打印true
  16. * 否打印false
  17. */
  18. public static void testIsAssignedFrom2() {
  19. System.out.println("Object是String的父類:"+Object.class.isAssignableFrom(String.class));
  20. }
  21. /**
  22. * 判斷一個類是否和另一個類相同
  23. * 是打印true
  24. * 否打印false
  25. */
  26. public static void testIsAssignedFrom3() {
  27. System.out.println("Object和Object相同:"+Object.class.isAssignableFrom(Object.class));
  28. }
  29. /**
  30. * 判斷str是否是Object類的實例
  31. * 是打印true
  32. * 否打印false
  33. */
  34. public static void testInstanceOf1() {
  35. String str = new String();
  36. System.out.print("str是Object的實例:");
  37. System.out.println(str instanceof Object);
  38. }
  39. /**
  40. * 判斷o是否是Object類的實例
  41. * 是打印true
  42. * 否打印false
  43. */
  44. public static void testInstanceOf2() {
  45. Object o = new Object();
  46. System.out.print("o是Object的實例:");
  47. System.out.println(o instanceof Object);
  48. }
  49. public static void main(String[] args) {
  50. testIsAssignedFrom1();
  51. testIsAssignedFrom2();
  52. testIsAssignedFrom3();
  53. testInstanceOf1();
  54. testInstanceOf2();
  55. }
  56. }

結果:

String是Object的父類:false
Object是String的父類:true
Object和Object相同:true
str是Object的實例:true
o是Object的實例:true

Class.isAssignableFrom(Class clz)方法 與 instanceof 關鍵字的區別