文档章节

instanceof 与isAssignableFrom

时光流转
 时光流转
发布于 2017/07/26 10:51
字数 317
阅读 4
收藏 0

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.   
  40. }  

本文转载自:http://blog.csdn.net/kjfcpua/article/details/7045207

时光流转
粉丝 10
博文 77
码字总数 15293
作品 0
私信 提问
Java 类型信息 instanceof、isInstance和isAssignabelFrom

instanceof运算符 只被用于对象引用变量,检查左边的被测试对象 是不是 右边类或接口的 实例化。如果被测对象是null值,则测试结果总是false。 形象地:自身实例或子类实例 instanceof 自身类...

V字仇杀
2017/10/27
15
0
instanceof, isinstance,isAssignableFrom的区别

instanceof运算符 只被用于对象引用变量,检查左边的被测试对象 是不是 右边类或接口的 实例化。如果被测对象是null值,则测试结果总是false。 形象地:自身实例或子类实例 instanceof 自身类...

HTCKF
2014/02/20
43
0
java中instanceOf和Class.isInstance(obj)的对比

一.常用Java类检测方法 [1] instanceOf 运算符 instanceOf是运算符只被用于对象引用变量,检查左边对象是不是右边类或接口的实例化。如果被测对象是null值,则测试结果总是false。 [2] Clas...

IamOkay
2014/10/27
3.3K
2
spring Aop 实现对http请求参数的验证,及对功能权限的验证

Aop 面向切面编程,在java 中普遍使用动态代理和反射实现。具体的请百度。spring aop有多种方式。本次使用的是注解方式,(建议使用注解方式)。 第一步自定义了2个注解 @Target(value={Ele...

巡山
2016/06/21
122
0
Json-lib 与 hibernate 共同使用的问题

hibernate使用CGLIB把POJO的domain对象动态代理,实现它的魔法,但是给JSON的序列化带来了麻烦,因为JSON无法对lazy的属性进行序列化。有以下的四个方法可以解决hibernate的序列化问题 建立J...

Zero零_度
2015/09/24
113
0

没有更多内容

加载失败,请刷新页面

加载更多

Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
5
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部