• Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别


    原地址: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。

    Java代码  收藏代码
    1. package com.bill99.pattern;  
    2.   
    3. public class AssignableTest {  
    4.       
    5.     public AssignableTest(String name) {  
    6.     }  
    7.     /** 
    8.      * 判断一个类是否是另一个类的父类 
    9.      * 是打印true 
    10.      * 否打印false 
    11.      */  
    12.     public static void testIsAssignedFrom1() {  
    13.         System.out.println("String是Object的父类:"+String.class.isAssignableFrom(Object.class));  
    14.     }  
    15.     /** 
    16.      * 判断一个类是否是另一个类的父类 
    17.      * 是打印true 
    18.      * 否打印false 
    19.      */  
    20.     public static void testIsAssignedFrom2() {  
    21.         System.out.println("Object是String的父类:"+Object.class.isAssignableFrom(String.class));  
    22.     }  
    23.     /** 
    24.      * 判断一个类是否和另一个类相同 
    25.      * 是打印true 
    26.      * 否打印false 
    27.      */  
    28.     public static void testIsAssignedFrom3() {  
    29.         System.out.println("Object和Object相同:"+Object.class.isAssignableFrom(Object.class));  
    30.     }  
    31.   
    32.     /** 
    33.      * 判断str是否是Object类的实例 
    34.      * 是打印true 
    35.      * 否打印false 
    36.      */  
    37.     public static void testInstanceOf1() {  
    38.         String str = new String();  
    39.         System.out.print("str是Object的实例:");  
    40.         System.out.println(str instanceof Object);  
    41.     }  
    42.     /** 
    43.      * 判断o是否是Object类的实例 
    44.      * 是打印true 
    45.      * 否打印false 
    46.      */  
    47.     public static void testInstanceOf2() {  
    48.         Object o = new Object();  
    49.         System.out.print("o是Object的实例:");  
    50.         System.out.println(o instanceof Object);  
    51.     }  
    52.       
    53.     public static void main(String[] args) {  
    54.         testIsAssignedFrom1();  
    55.         testIsAssignedFrom2();  
    56.         testIsAssignedFrom3();  
    57.         testInstanceOf1();  
    58.         testInstanceOf2();  
    59.     }  
    60. }  

     结果:

    String是Object的父类:false
    Object是String的父类:true
    Object和Object相同:true
    str是Object的实例:true
    o是Object的实例:true

  • 相关阅读:
    数论笔记
    微积分笔记
    洛谷P3835 【模板】可持久化平衡树
    洛谷P3385 【模板】负环
    洛谷 P3379 【模板】最近公共祖先(LCA)
    洛谷P3386 【模板】二分图匹配
    洛谷P3388 【模板】割点(割顶)
    洛谷P3373 【模板】线段树 2
    洛谷P3372 【模板】线段树 1
    Linux(CentOS 6.5) 下安装MySql 5.7.18 二进制版本粗浅攻略
  • 原文地址:https://www.cnblogs.com/ihanliu/p/4366557.html
Copyright © 2020-2023  润新知