Class.isAssignableFrom与 instanceof 区别

来源:互联网 发布:程序员的发展 编辑:程序博客网 时间:2024/06/14 01:19

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

import org.junit.Test;class Person {    private String name;    private int age;    public Person() {        name = "lgh";        age = 25;    }    public Person(String name, int age) {        this.name = name;        this.age = age;    }    public Person(int age, String name) {        this.name = name;        this.age = age;    }    @Override    public String toString() {        return "Person{" +                "name='" + name + '\'' +                ", age=" + age +                '}';    }}public class T {    @Test    public void test()  {        Person person1 = new Person("111", 24);        Person person2 = new Person("222", 25);        System.out.println(person1.getClass().isAssignableFrom(person2.getClass()));//true        System.out.println(Object.class.isAssignableFrom(person1.getClass()));//true        System.out.println(person1.getClass().isAssignableFrom(Object.class));//false        System.out.println(person1 instanceof Person);//true        System.out.println(person1 instanceof Object);//true    }}
阅读全文
0 0
原创粉丝点击