標籤:
一句話總結:
- isAssignableFrom()方法是從類繼承的角度去判斷,instanceof()方法是從執行個體繼承的角度去判斷。
- isAssignableFrom()方法是判斷是否為某個類的父類,instanceof()方法是判斷是否某個類的子類。
1. Class.isAssignableFrom()方法
Class.isAssignableFrom()是用來判斷一個類Class1和另一個類Class2是否相同或是另一個類的子類或介面。
格式為:
Class1.isAssignableFrom(Class2)
調用者和參數都是java.lang.Class類型。
2.Class.instanceof()方法
Class.instanceof()是用來判斷一個對象執行個體是否是一個類或介面的或其子類子介面的執行個體。
格式是:
obj instanceof TypeName
第一個參數是對象執行個體名,第二個參數是具體的類名或介面名,例如 String,InputStream。其傳回值為boolean。
3.具體用法
轉自(http://sunnylocus.iteye.com/blog/555676)
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
Java中isAssignableFrom()方法與instanceof()方法用法