zoukankan      html  css  js  c++  java
  • isAssignableFrom

    instanceof 针对实例 
    isAssignableFrom针对class对象

     

    isAssignableFrom   是用来判断一个类Class1和另一个类Class2是否相同或是另一个类的超类或接口。   
    通常调用格式是  

    Java代码  收藏代码
    1. Class1.isAssignableFrom(Class2)     

     

    调用者和参数都是   Java.lang.Class   类型。   
          
      而   instanceof   是用来判断一个对象实例是否是一个类或接口的或其子类子接口的实例。   
        格式是:   

    Java代码  收藏代码
    1. oo   instanceof   TypeName       

         第一个参数是对象实例名,第二个参数是具体的类名或接口名,例如   String,InputStream。

     

    Java代码  收藏代码
    1. public class Test {  
    2.     public static void main(String[] args) {  
    3.         List<String> list = new ArrayList<String>();  
    4.         System.out.println(list instanceof List);  
    5.         System.out.println(list instanceof ArrayList);  
    6.           
    7. /*      System.out.println(list.getClass()); 
    8.         System.out.println(List.class); 
    9.         System.out.println(ArrayList.class);*/  
    10.           
    11.         System.out.println(list.getClass().isAssignableFrom(List.class));  
    12.         System.out.println(List.class.isAssignableFrom(list.getClass()));  
    13.     }  
    14. }  

     

    结果:

    true
    true
    false
    true

    其中instanceof是子-->父 
    isAssignableFrom是父-->子

     

     

    我们应该尽量少用instanceof 运算符

    应该尽量用多态来替代它

     

    Java代码  收藏代码
    1. public interface Accounts {     
    2.   
    3. }  
    4.   
    5. public class WaterAccounts implements Accounts {  
    6.       
    7. }  
    8.   
    9. public class ElectricityAccounts implements Accounts {   
    10.       
    11. }  

     

    Java代码  收藏代码
      1. //客户端    
      2. public class test {  
      3.   
      4.     public static void main(String[] args) {  
      5.   
      6.         Accounts accsWater = new WaterAccounts();  
      7.         Accounts accsElectricity = new ElectricityAccounts();  
      8.   
      9.         acceptAcounts(accsWater);  
      10.   
      11.     }  
      12.   
      13.     // 第一种使用instanceof  
      14.     public static void acceptAcounts(Accounts accs) {  
      15.   
      16.         if (accs instanceof WaterAccounts) {  
      17.   
      18.             System.out.println("收水费");  
      19.   
      20.         } else if (accs instanceof ElectricityAccounts) {  
      21.   
      22.             System.out.println("收电费");  
      23.         }  
      24.   
      25.     }  
      26.   
      27.     // 第二种使用多态  
      28.     public static void acceptAcounts(WaterAccounts accs) {  
      29.   
      30.         System.out.println("收水费");  
      31.   
      32.     }  
      33.   
      34.     public static void acceptAcounts(ElectricityAccounts accs) {  
      35.   
      36.         System.out.println("收电费");  
      37.   
      38.     }  
      39.   

  • 相关阅读:
    tomcat createSecureRandom 花费了将近10分钟
    tcpdump取数据保存
    Linux TOP命令 按内存占用排序和按CPU占用排序
    在四合院里写code是什么体验(非拉仇恨)
    严重的抑郁与焦虑症
    CodeIgniter 下引入ORM Doctrine
    linux下解压
    ssh 使用密钥与登录进行远程cp
    mac os 下的sublime --- 快捷键
    pixelmator处理png图片,处理掉过白的留白。
  • 原文地址:https://www.cnblogs.com/1995hxt/p/5724073.html
Copyright © 2011-2022 走看看