instanceof是Java的一个二元操作符,和==,>,

String s = "I AM an Object!";

boolean isObject = s instanceof Object;

我们声明了一个String对象引用,指向一个String对象,然后用instancof来测试它所指向的对象是否是Object类的一个实例,显然,这是真的,所以返回true,也就是isObject的值为True。

instanceof有一些用处。比如我们写了一个处理账单的系统,其中有这样三个类:

public class Bill {//省略细节}

public class PhoneBill extends Bill {//省略细节}

public class GasBill extends Bill {//省略细节}

在处理程序里有一个方法,接受一个Bill类型的对象,计算金额。假设两种账单计算方法不同,而传入的Bill对象可能是两种中的任何一种,所以要用instanceof来判断:

public double calculate(Bill bill) {

if (bill instanceof PhoneBill) {

//计算电话账单

}

if (bill instanceof GasBill) {

//计算燃气账单

}

...

}

这样就可以用一个方法处理两种子类。

然而,这种做法通常被认为是没有好好利用面向对象中的多态性。其实上面的功能要求用方法重载完全可以实现,这是面向对象变成应有的做法,避免回到结构化编程模式。只要提供两个名字和返回值都相同,接受参数类型不同的方法就可以了:

public double calculate(PhoneBill bill) {

//计算电话账单

}

public double calculate(GasBill bill) {

//计算燃气账单

}

所以,使用instanceof在绝大多数情况下并不是推荐的做法,应当好好利用多态。

java js关键字_js中的instanceof关键字相关推荐

  1. Java中的instanceof关键字

    Java中的instanceof关键字 instanceof是Java的一个二元操作符,和==,>,<是同一类东东.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是测试它左边 ...

  2. java学习中,instanceof 关键字 和 final 关键字、值的传递(java 学习中的小记录)...

    java学习中,instanceof 关键字 和 final 关键字.值的传递(java 学习中的小记录)作者:王可利(Star·星星) instanceof 关键字 作用: 1.用来判断某个对象是否 ...

  3. java instanceof 继承_Java中的instanceof关键字

    Java中,instanceof运算符的前一个操作符是一个引用变量,后一个操作数通常是一个类(可以是接口),用于判断前面的对象是否是后面的类,或者其子类.实现类的实例.如 果是返回true,否则返回f ...

  4. java中的instanceof 关键字以及作用

    java中instance关键字说明: 1)instanceof是java中的一个关键字,java中的关键字都是小写字母 2)instanceof关键字的作用是判断左边对象是否是右边类的实例-(通俗易 ...

  5. java关键字static_Java中的static关键字

    java关键字static static keyword in Java is used a lot in java programming. Java static keyword is used ...

  6. 什么是java的关键字_java中常见的关键字

    什么是关键字呢? 概述:关键字就是在java语言中赋予特殊含义的单词 特点:1.组成的关键字的单词全是小写 2.常见的代码编辑器中,对关键字都有特殊的颜色标记 比如在idea中对关键字都有特殊的颜色标 ...

  7. java修饰类的关键字_JAVA中的修饰关键字

    今天我们来说说JAVA中的修饰关键字. 常用的有: 1.final 关键字 修饰成员变量:a. 必须初始化值. b. 被fianl修饰的成员变量赋值,有两种方式:1.直接赋值 2.全部在构造方法中赋初 ...

  8. java中default关键字_Java 中的 default 关键字及代码示例

    本文通过代码示例介绍如何在 Java 中使用 default 关键字. 基本上,有 3 个地方可以使用 Java 中的 default 关键字: 在 switch case 语句中指定默认值 在 Ja ...

  9. java异常类关键字_Java中的异常处理关键字是什么?

    java异常处理中使用了四个关键字. throw:有时我们明确要创建异常对象然后抛出它来停止程序的正常处理.throw关键字用于向运行时抛出异常来处理它. throws:当我们在方法中抛出任何已检查的 ...

最新文章

  1. JQuery iframe 刷新效果
  2. markdown转word
  3. 手机网站开发必修课[1]:手机浏览器 本文来自:http://www.fool2fish.cn/?p=290
  4. ITK:提取矢量图像的分量/通道
  5. Unity 2017 Game Optimization 读书笔记(4)Scripting Strategies Part 4
  6. 既然参与,那就做好,我相信我们是最棒的!!!
  7. jqery 实现滚动图片【三】
  8. 一笔没有问题的数据 误操作成汇总和结算不一致的情况的处理方式
  9. SPOJ QTREE4 lct
  10. 论Spring开发框架
  11. 数据结构严蔚敏(c语言版)课后算法题答案-线性表
  12. AI芯片:Edge TPU(谷歌出品)【在边缘(edge)设备上运行的“专用集成芯片”】【量化操作:Edge TPU使用8 位权重进行计算,而通常使用32位权重。所以我们应该将权重从32位转换为8位】
  13. 聚类——K均值简介及Python实现
  14. Words study
  15. 高并发场景下,库存问题解决方案
  16. 订单流失总金额怎么算_微信新规下增长乏力,裂变到底该怎么做?
  17. 数学:确定性的丧失--第一章 数学真理的起源
  18. mysql spring lobhandler_Spring让LOB数据操作变得简单易行
  19. 分享Linux 机器 CPU 毛刺问题排查经历
  20. 大鹏背景,大鹏为什么能邀请那么多明星?揭秘董成鹏的成名路

热门文章

  1. 一文让你搞懂YOLO难关!
  2. 机器学习-卷积神经网络简介
  3. JavaScript权威Douglas Crockford:代码阅读和每个人都该学的编程
  4. Python3学习笔记(二):基本数据类型
  5. Python 计算欧氏距离
  6. 250g硬盘linux分区,linux分区格式化命令使用方法
  7. Anaconda入门使用指南(二)
  8. 第八届全国功能基因组学高峰论坛-微生物分会场 完美落幕!
  9. 宏基因组合种树第290期—油松
  10. Linux Shell Tips小技巧