instanceOf是Java的一个二元操作符,和==,>,<是同一类东西。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。可以用在继承中的子类的实例是否为父类的实现。相当于c#中的is操作符。
举个例子:
String s = "I AM an Object!";
boolean isObject = s instanceOf Object;
我们声明了一个String对象引用,指向一个String对象,然后用instanceOf来测试它所指向的对象是否是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在绝大多数情况下并不是推荐的做法,应当好好利用多态。
instanceOf 一般情况下 用在对象类型的强制转换 ,
例如:
继承关系 class Manager extends Employee
----------------------------------------------------------
public void doSomething(Employee e) {
if ( e instanceOf Manager){
Manager m = (Manager) e ;
}
}
文章转自:http://baike.baidu.com/view/1989052.htm
分享到:
相关推荐
JS 中 typeof 与 instanceof 的区别 在 JavaScript 中,typeof 和 instanceof 是两个常用的运算符,用来判断一个变量是否为空,或者是什么类型的。但是,这两个运算符之间还是有区别的。 typeof 运算符是一个一元...
### instanceof 关键字详解 在Java编程语言中,`instanceof`是一个十分重要的关键字,用于判断一个对象是否属于特定的类或接口。本文将详细解释`instanceof`的关键特性和使用场景,并通过示例代码加深理解。 #### ...
if ($header instanceof Div && $body instanceof Div && $footer instanceof Header1) { // 生成页面 } else { throw new InvalidArgumentException('Incorrect element types'); } } } ``` 在这个例子中,`...
在JavaScript中,`instanceof`和`prototype`是两个非常重要的概念,它们涉及到对象的类型检测和继承机制。本文将深入探讨这两个关键字的关系及其在实际编程中的应用。 首先,我们来理解`instanceof`操作符。`...
本文将深入探讨四种常用的方法来识别和判断JavaScript中的数据类型:`typeof`、`instanceof`、`constructor`以及`prototype`。 ### 1. `typeof` `typeof`操作符是最常见的类型检测方式之一,它返回一个表示未经计算...
在JavaScript编程语言中,`instanceof` 和 `typeof` 是两个非常重要的操作符,用于判断变量的类型。它们各自有着不同的用途和用法,对于理解和调试代码至关重要。 首先,我们来详细了解一下`instanceof`操作符。`...
在面向对象编程中,向下转型和`instanceof`运算符是两种重要的概念,尤其是在多态性的实现中扮演关键角色。本文将深入探讨这两个主题,并结合Delphi编程语言的背景进行阐述,尽管`instanceof`运算符在Java中更为常见...
ES5的instanceof手写实现
instanceof 马克-to-win java视频的详细的描述介绍
例如,`if (object instanceof MyClass)` 将返回 `true` 如果 `object` 是 `MyClass` 或其子类的实例。这个运算符在处理多态时非常有用,可以用来判断对象的实际类型,以便执行适当的操作。 在使用多态时,应避免...
15.instanceof运算符.zip15.instanceof运算符.zip15.instanceof运算符.zip15.instanceof运算符.zip15.instanceof运算符.zip15.instanceof运算符.zip15.instanceof运算符.zip15.instanceof运算符.zip15.instanceof...
在JavaScript中,typeof和instanceof是常用的两种检测数据类型的方式,它们各自有其适用的场景和特点。 ### typeof typeof 是一个一元运算符,它用于返回变量或表达式的类型。当使用typeof运算符时,它通常会返回...
特别是对于JavaScript中的instanceof操作符的深入理解,是前端开发者应该掌握的一个重要知识点。instanceof操作符常用于判断一个实例对象是否为某个类的实例,或者实例是否属于某个类的原型链上。 ### instanceof...
`instanceof`是JavaScript中的一个操作符,用于检查一个对象是否是特定构造函数的实例,或者更具体地说,是检查该对象的原型链上是否存在指定构造函数的`prototype`。这个操作符对于理解和处理对象继承关系非常关键...
"baseJS-instanceof.zip"这个压缩包文件显然聚焦于JavaScript的基础知识,特别是`instanceof`操作符的使用。在这里,我们将深入探讨`instanceof`在JavaScript中的工作原理、相关知识点以及在实际编程中的应用。 `...
在Java编程语言中,`instanceof`关键字是一个非常重要的工具,它用于判断对象是否属于某个类、接口或者其子类。这个关键字可以帮助开发者在运行时检查一个对象的类型,从而进行更加灵活的代码控制。本篇文章将深入...
面向对象编程是Java语言的核心特性之一,而`instanceof`关键字在Java中扮演着重要的角色。本章将深入探讨`instanceof`关键字的使用、原理以及它在实际开发中的应用场景。 `instanceof`关键字用于判断一个对象是否...
在JavaScript中,`instanceof`操作符用于检测一个对象是否属于某个类的实例。这个操作符在日常开发中被广泛使用,但有时它可能会表现出一些意外的行为,这可能被误认为是“bug”。本文将深入探讨`instanceof`的工作...