Class.isAssignableFrom(Class clz)方法 與 instanceof 關鍵字的區別
阿新 • • 發佈:2017-07-26
一個 assign 博客 -h logs lang pen clas cat
Java代碼
Class.isAssignableFrom(Class clz)方法 與 instanceof 關鍵字的區別
博客分類:- Java
原地址: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。
- package com.bill99.pattern;
- public class AssignableTest {
- public AssignableTest(String name) {
- }
- /**
- * 判斷一個類是否是另一個類的父類
- * 是打印true
- * 否打印false
- */
- public static void testIsAssignedFrom1() {
- System.out.println("String是Object的父類:"+String.class.isAssignableFrom(Object.class));
- }
- /**
- * 判斷一個類是否是另一個類的父類
- * 是打印true
- * 否打印false
- */
- public static void testIsAssignedFrom2() {
- System.out.println("Object是String的父類:"+Object.class.isAssignableFrom(String.class));
- }
- /**
- * 判斷一個類是否和另一個類相同
- * 是打印true
- * 否打印false
- */
- public static void testIsAssignedFrom3() {
- System.out.println("Object和Object相同:"+Object.class.isAssignableFrom(Object.class));
- }
- /**
- * 判斷str是否是Object類的實例
- * 是打印true
- * 否打印false
- */
- public static void testInstanceOf1() {
- String str = new String();
- System.out.print("str是Object的實例:");
- System.out.println(str instanceof Object);
- }
- /**
- * 判斷o是否是Object類的實例
- * 是打印true
- * 否打印false
- */
- public static void testInstanceOf2() {
- Object o = new Object();
- System.out.print("o是Object的實例:");
- System.out.println(o instanceof Object);
- }
- public static void main(String[] args) {
- testIsAssignedFrom1();
- testIsAssignedFrom2();
- testIsAssignedFrom3();
- testInstanceOf1();
- testInstanceOf2();
- }
- }
結果:
String是Object的父類:false
Object是String的父類:true
Object和Object相同:true
str是Object的實例:true
o是Object的實例:true
Class.isAssignableFrom(Class clz)方法 與 instanceof 關鍵字的區別