Class.isAssignableFrom()是用来判断一个类Class1和另一个类Class2是否相同或是另一个类的超类(父类)或接口。
格式为:
Class1.isAssignableFrom(Class2)
调用者和参数都是java.lang.Class类型。
而instanceof运算符是用来在运行时指出对象是否是特定类或者是它的子类的一个实例。
用法:
result = object instanceof class
参数:
result:布尔类型。
object:必选项。任意对象表达式。
class:必选项。任意已定义的对象类。
说明:
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。
- 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