Class.isAssignableFrom与instanceof的区别


isAssignableFrom

假设有两个类Class1和Class2。

格式:Class1.isAssignableFrom(Class2)表示:

  1. 类Class1和Class2是否相同。
  2. Class1是否是Class2的父类或接口
    调用者和参数都是java.lang.Class类型。 

instanceof

用来判断一个对象是否是一个类及其子类或接口及其子接口的的实例。
格式:object instanceof TypeName
第一个参数是对象实例名,第二个参数是具体的类名或接口名

举例

public class TestCase {  
    public static void main(String[] args) {  
        TestCase test = new TestCase();  
        test.testIsAssignedFrom1();  
        test.testIsAssignedFrom2();  
        test.testIsAssignedFrom3();  
        test.testInstanceOf1();  
        test.testInstanceOf2();  
    }  
  
    public void testIsAssignedFrom1() {  
        System.out.println(String.class.isAssignableFrom(Object.class));  
    }  
  
    public void testIsAssignedFrom2() {  
        System.out.println(Object.class.isAssignableFrom(Object.class));  
    }  
  
    public void testIsAssignedFrom3() {  
        System.out.println(Object.class.isAssignableFrom(String.class));  
    }  
  
    public void testInstanceOf1() {  
        String ss = "";  
        System.out.println(ss instanceof Object);  
    }  
  
    public void testInstanceOf2() {  
        Object o = new Object();  
        System.out.println(o instanceof Object);  
    }  
  
}  

打印结果:

false  
true  
true  
true  
true  

转载:https://www.cnblogs.com/wangkaihua/p/10339421.html

TRANSLATE with x English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian  
Bing Webmaster Portal Back